链接动态库出错 undefined reference to `__init_array_start'

花事不了 2017-12-22 03:39:57
1、问题描述:
原始编译没有问题,增加链接动态库 -ltl_playermanager 后编译报错
2、makefile片段:
librender_audio_plugin: TARGET := librender_audio_plugin.so
librender_audio_plugin: $(OBJS-RENDER-AUDIO)
$(warning suh25ssssssssssssssssssssssssssssss $(LD) ssssssssssssssssssssssssss)
$(LD) -o $(TARGET) $(OBJS-RENDER-AUDIO) $(LDFLAGS) $(LIBS) --whole-archive -ltl_playermanager -O2 \
-lc $(LIBGCC);
$(RM) $(BINDIR)output/plugins/$(TARGET)
install -m 777 $(TARGET) $(BINDIR)output/plugins

3、编译报错:
Makefile:428: suh25ssssssssssssssssssssssssssssss /home/lixiangtao/kiwi_voice/src/tonlyapps/libffmpegplayer/libmedia/../../../../build/tmp/sysroots/x86_64-linux/usr/bin/aarch64-poky-linux/aarch64-poky-linux-ld -shared -fPIC ssssssssssssssssssssssssss
/home/lixiangtao/kiwi_voice/src/tonlyapps/libffmpegplayer/libmedia/../../../../build/tmp/sysroots/x86_64-linux/usr/bin/aarch64-poky-linux/aarch64-poky-linux-ld -shared -fPIC -o librender_audio_plugin.so component/render/alsa.o component/render/format.o component/render/chmixer.o component/render/iis_driver.o component/render/snd_driver.o -L../output/bin -L../output/lib --hash-style=gnu -L../../../../build/tmp/sysroots/aud8516-slc/lib64 -L../../../../build/tmp/sysroots/aud8516-slc/usr/lib64 -lpthread -lm -ldl -lmad -lfaad -ltremor -lflac -logg -lgpg-error -lgcrypt -lmedia -lasound --whole-archive -ltl_playermanager -O2 \
-lc /home/lixiangtao/kiwi_voice/src/tonlyapps/libffmpegplayer/libmedia/../../../../build/tmp/sysroots/x86_64-linux/usr/bin/aarch64-poky-linux/../../../../aud8516-slc-tcbootstrap/usr/lib64/aarch64-poky-linux/6.2.0/libgcc.a;
/home/lixiangtao/kiwi_voice/build/tmp/sysroots/aud8516-slc/usr/lib64/libc_nonshared.a(elf-init.oS): In function `__libc_csu_init':
/usr/src/debug/glibc/2.24-r0/git/csu/elf-init.c:86: undefined reference to `__init_array_start'
/home/lixiangtao/kiwi_voice/src/tonlyapps/libffmpegplayer/libmedia/../../../../build/tmp/sysroots/x86_64-linux/usr/bin/aarch64-poky-linux/aarch64-poky-linux-ld: /home/lixiangtao/kiwi_voice/build/tmp/sysroots/aud8516-slc/usr/lib64/libc_nonshared.a(elf-init.oS): relocation R_AARCH64_ADR_PREL_PG_HI21 against external symbol `__init_array_start' can not be used when making a shared object; recompile with -fPIC
/usr/src/debug/glibc/2.24-r0/git/csu/elf-init.c:86: undefined reference to `__init_array_start'
/usr/src/debug/glibc/2.24-r0/git/csu/elf-init.c:86: undefined reference to `__init_array_end'
/home/lixiangtao/kiwi_voice/src/tonlyapps/libffmpegplayer/libmedia/../../../../build/tmp/sysroots/x86_64-linux/usr/bin/aarch64-poky-linux/aarch64-poky-linux-ld: /home/lixiangtao/kiwi_voice/build/tmp/sysroots/aud8516-slc/usr/lib64/libc_nonshared.a(elf-init.oS): relocation R_AARCH64_ADR_PREL_PG_HI21 against external symbol `__init_array_end' can not be used when making a shared object; recompile with -fPIC
/usr/src/debug/glibc/2.24-r0/git/csu/elf-init.c:86: undefined reference to `__init_array_end'
/home/lixiangtao/kiwi_voice/src/tonlyapps/libffmpegplayer/libmedia/../../../../build/tmp/sysroots/x86_64-linux/usr/bin/aarch64-poky-linux/aarch64-poky-linux-ld: librender_audio_plugin.so: hidden symbol `__init_array_end' isn't defined
/home/lixiangtao/kiwi_voice/src/tonlyapps/libffmpegplayer/libmedia/../../../../build/tmp/sysroots/x86_64-linux/usr/bin/aarch64-poky-linux/aarch64-poky-linux-ld: final link failed: Bad value
Makefile:428: recipe for target 'librender_audio_plugin' failed
make[1]: *** [librender_audio_plugin] Error 1
make[1]: Leaving directory '/home/lixiangtao/kiwi_voice/src/tonlyapps/libffmpegplayer/libmedia'

这个问题搞了好几天了,在网上查说是链接-lsupc++ -lstdc++等库,都不能解决。
求高人指点。
跪谢!

...全文
2742 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
花事不了 2017-12-25
  • 打赏
  • 举报
回复
发现这个是个非问题,因为在编译选项中加了--whole-archive,所以出现了这个问题,取消掉这个选项后,问题不在出现。
ooolinux 2017-12-22
  • 打赏
  • 举报
回复
你这个发C++区看看。

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧