链接器错误:“ff_log2_tab”的多个定义

Posted

技术标签:

【中文标题】链接器错误:“ff_log2_tab”的多个定义【英文标题】:Linker error: Multiple definitions of 'ff_log2_tab' 【发布时间】:2016-12-26 16:34:13 【问题描述】:

我正在尝试构建一个将静态版本的 libav 链接到其中的共享库。我使用--enable-pic 构建库以确保它对我有用。但是在与以下命令链接时:

g++ -shared -o libbrake.so -L./ -L./libs -Wl,-z,defs -Wl,--whole-archive -Wl,-Bsymbolic  -lavcodec -lavfilter -lavformat -lavresample -lavutil -lswscale -lbluray -ldvdnav -ldvdread -lhandbrake -lvpx -ldl -lm -lpthread -lx264 -ltheoraenc -lvorbis -ljansson -la52 -lass -lbz2 -lz -lxml2 -lopus -lmp3lame -logg -lsamplerate -lfontconfig -ldca -lharfbuzz

libav 所需的静态库位于./libs 目录中,为.a 档案。

链接后出现错误:

./libs/libavformat.a(log2_tab.o):(.rodata+0x0): multiple definition of `ff_log2_tab'

有没有办法解决这个问题?

【问题讨论】:

查找第二个定义在哪里(nm 是你的朋友)。 我现在这样做了:使用ar d 我删除了多个对象文件。但我认为这很“脏” 【参考方案1】:

我现在这样做了:使用ar d 我删除了多个对象文件。但我认为这很“脏” ——尼德霍格

【讨论】:

以上是关于链接器错误:“ff_log2_tab”的多个定义的主要内容,如果未能解决你的问题,请参考以下文章

使用 Hexagon DSP 工具链的多定义链接器错误

链接器不指出错误;多个定义警告指向同一行

从 AfxGetAppModuleState 更改为 AfxGetStaticModuleState 会导致链接器错误:LNK1169:找到一个或多个多重定义的符号

模板类的链接器错误

STM32 Eclipse + ARM GNU 工具链错误链接器

分离式编译时 链接器工具错误 (一个变量被定义一次或多次)