因为zmq的原生配置rpath和gcc路径一样,无法满足自定义目录的gcc安装环境,所以进行修改
1.解压zmq源码,打开文件Makefile.am,增加-Wl,-rpath,'$$ORIGIN',如下
if ON_LINUX
libzmq_la_LDFLAGS = \
-version-info @LTVER@ \
@LIBZMQ_EXTRA_LDFLAGS@ \
-Wl,--version-script=$(srcdir)/src/libzmq.vers -Wl,-rpath,'$$ORIGIN'
else
2.执行命令autoreconf,重新配置
3.执行编译功能
./configure --with-libsodium=no && make clean && make
4.查看rpath
[root@mba zeromq-4.1.4]# readelf -d .libs/libzmq.so
Dynamic section at offset 0x5c7a0 contains 27 entries:
Tag Type Name/Value
0x0000000000000001 (NEEDED) Shared library: [librt.so.1]
0x0000000000000001 (NEEDED) Shared library: [libpthread.so.0]
0x0000000000000001 (NEEDED) Shared library: [libstdc++.so.6]
0x0000000000000001 (NEEDED) Shared library: [libm.so.6]
0x0000000000000001 (NEEDED) Shared library: [libc.so.6]
0x0000000000000001 (NEEDED) Shared library: [libgcc_s.so.1]
0x000000000000000e (SONAME) Library soname: [libzmq.so.5]
0x000000000000000f (RPATH) Library rpath: [/usr/local/gcc-5.3.0/lib/../lib64:$ORIGIN]
0x000000000000000c (INIT) 0xb9e0
0x000000000000000d (FINI) 0x478a8
0x0000000000000004 (HASH) 0x158
0x0000000000000005 (STRTAB) 0x1790
0x0000000000000006 (SYMTAB) 0x650
0x000000000000000a (STRSZ) 3781 (bytes)
0x000000000000000b (SYMENT) 24 (bytes)
0x0000000000000003 (PLTGOT) 0x25ca20
0x0000000000000002 (PLTRELSZ) 3072 (bytes)
0x0000000000000014 (PLTREL) RELA
0x0000000000000017 (JMPREL) 0xade0
0x0000000000000007 (RELA) 0x28d8
0x0000000000000008 (RELASZ) 34056 (bytes)
0x0000000000000009 (RELAENT) 24 (bytes)
0x000000006ffffffe (VERNEED) 0x27c8
0x000000006fffffff (VERNEEDNUM) 5
0x000000006ffffff0 (VERSYM) 0x2656
0x000000006ffffff9 (RELACOUNT) 1334
0x0000000000000000 (NULL) 0x0