链接动态库出错 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++等库,都不能解决。
求高人指点。
跪谢!