Chinaunix
标题:
请教gcc库链接问题?
[打印本页]
作者:
djstava
时间:
2011-06-20 11:01
标题:
请教gcc库链接问题?
在一个工程里用到了openssl的两个不同版本的库,一个静态库,一个动态库(应该是优先调用动态库),分别被两个不同的模块用到,使用中出错,使用静态库的模块会跑去调用动态库里的函数,现在想用-Wl,-rpath来指定静态库路径
在Makefile中是这样写的
$(TARGET):
-$(RM) $@
$(LXX) -Wl,-rpath $(LIBDIR) -L$(LIBDIR) -o $@ $(LDFLAG) $(LIBS)//LXX=g++
mipsel-uclibc-strip $(TARGET)
$(LIBDIR)是静态库所存放的位置,LIBS=-lcrpto -lssl,......,-lcrypto -lssll
请问在现有结构中,如果去改正该问题,使得静、动态库都能被正确调用,谢谢。
作者:
djstava
时间:
2011-06-20 11:39
将LIBS分开,LIBS=-lcrpto -ssl
ALIBS=-lcrypto -lssll
得到可执行文件后再使用readelf看到的信息是
0x00000001 (NEEDED) Shared library: [libpthread.so.0]
0x00000001 (NEEDED) Shared library: [librt.so.0]
0x00000001 (NEEDED) Shared library: [libstdc++.so.6]
0x00000001 (NEEDED) Shared library: [libQtWebKit.so.4]
0x00000001 (NEEDED) Shared library: [libQtGui.so.4]
0x00000001 (NEEDED) Shared library: [libQtNetwork.so.4]
0x00000001 (NEEDED) Shared library: [libQtCore.so.4]
0x00000001 (NEEDED) Shared library: [libbrowservistas.so.1]
0x00000001 (NEEDED) Shared library: [libMurphytalk.so.1]
0x00000001 (NEEDED) Shared library: [libjsqt.so.1]
0x00000001 (NEEDED) Shared library: [libcrypto.so.0.9.8]
0x00000001 (NEEDED) Shared library: [libssl.so.0.9.8]
0x00000001 (NEEDED) Shared library: [libm.so.0]
0x00000001 (NEEDED) Shared library: [libgcc_s.so.1]
0x00000001 (NEEDED) Shared library: [libc.so.0]
0x00000001 (NEEDED) Shared library: [libdl.so.0]
0x0000000f (RPATH) Library rpath: [../libs]
作者:
djstava
时间:
2011-06-20 13:44
补充一点:
各模块最后合成一个elf文件
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2