动态库无法链接静态库
花事不了 2017-12-21 04:43:01 1、gcc和ld版本如下:
lixiangtao@ubuntu:~/kiwi_voice/src/tonlyapps/libffmpegplayer$ ld --version
GNU ld (GNU Binutils for Ubuntu) 2.26.1
Copyright (C) 2015 Free Software Foundation, Inc.
This program is free software; you may redistribute it under the terms of
the GNU General Public License version 3 or (at your option) a later version.
This program has absolutely no warranty.
lixiangtao@ubuntu:~/kiwi_voice/src/tonlyapps/libffmpegplayer$ gcc --version
gcc (Ubuntu 5.4.0-6ubuntu1~16.04.5) 5.4.0 20160609
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
2、问题:无法成功链接静态库:
(1)原始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) -O2 \
-lc $(LIBGCC);
$(RM) $(BINDIR)output/plugins/$(TARGET)
install -m 777 $(TARGET) $(BINDIR)output/plugins
(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) -ltl_playermanager -lavformat -lavcodec -lavutil -O2 \
-lc $(LIBGCC);
$(RM) $(BINDIR)output/plugins/$(TARGET)
install -m 777 $(TARGET) $(BINDIR)output/plugins
在链接时增加了4个静态库-ltl_playermanager -lavformat -lavcodec -lavutil ,无论这4个静态库是否存在,编译都不会报错,生成的动态库大小也不会变化。
3、编译过程如下:
Makefile:427: 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 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 -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 -lpthread -lm -ldl -lmad -lfaad -ltremor -lflac -logg -lgpg-error -lgcrypt -lmedia -lasound -ltl_playermanager -lavformat -lavcodec -lavutil -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;
rm -f ../output/plugins/librender_audio_plugin.so
install -m 777 librender_audio_plugin.so ../output/plugins
搞了好几天了,毫无进展,求大神帮忙。
跪谢!