GCC 指定运行期动态链接库搜索路径


链接器 ld 的 -rpath=dir 选项可以指定运行期 so 文件的搜索路径。
GCC 的 -Wl,option 选项可以传递选项给链接器 ld。
所以组合起来,可以直接使用 -Wl,-rpath=dir,或者 -Wl,-rpath,dir

g++ protobuf.cpp -o protobuf.out -I./3rdparty/include -L./3rdparty/lib -lprotobuf -Wl,-rpath=./3rdparty/lib/
ldd protobuf.out
        linux-vdso.so.1 (0x00007fffd5d7c000)
        libprotobuf.so.30 => ./3rdparty/lib/libprotobuf.so.30 (0x00007f8174c63000)
        libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f8174a70000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f8174a50000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f8174850000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f817482d000)
        libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f8174810000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f8174f4e000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f81746b1000)

https://gcc.gnu.org/onlinedocs/gcc-11.2.0/gcc.pdf
https://sourceware.org/binutils/docs/ld.pdf