GCC连接错误:版本节点没有找到符号
我试图构建一个共享库,我也得到了以下错误:GCC连接错误:版本节点没有找到符号
libavformat.so: version node not found for symbol [email protected]_52
ld: failed to set dynamic section sizes: Bad value
有谁知道这个错误是什么意思?主机是i586的Linux的目标是arm-linux的
编辑:解决,看评论
它拿了别人指出这一点给我,所以我想我还不如把它放在这里,以便其他人喜欢我能理解ognian的回答是:
这相当于编辑config.h
运行./configure
并使SYMVER
- 相关条目设置为0,像这样经过:
#define HAVE_SYMVER 0
#define HAVE_SYMVER_GNU_ASM 0
#define HAVE_SYMVER_ASM_LABEL 0
哦,功能was moved in April 2009从libavformat/util.c
到libavcodec/avpacket.c
中的新文件。该comment in internal.h国家明确:
If a function is moved from one library to another, a wrapper must be retained in the original location to preserve binary compatibility.
但它是不可能的,当一个函数库之间移动时保持二进制兼容性。
请注意,一年多前在Chromium project中报告了此错误。
顺便说一句,没有必要手动编辑config.h
:您可以运行./configure --disable-symver
。
实际上,在本版本中使用的FFmpeg版本中(r25864从2010年12月开始),'--disable-symver'选项不存在,所以手动编辑是必需的。不过,我很高兴听到关于配置选项的消息!当我们切换到更新的FFmpeg或Libav时,我会使用它。 – Nathan 2011-12-06 21:52:14
请张贴的gcc你使用两种编译和链接的参数。 – 2010-06-28 14:44:42
我摆脱了错误 - 它是特定于库,由内置Assey.symver指令 – ognian 2010-06-28 14:54:15
引起的,您可以在此处发布解决方案作为回答 – 2010-06-28 14:55:18