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