查看依赖库
ldd file
nli@nli-lab:$ ldd ./build/bin/oob_i2c
linux-vdso.so.1 (0x00007ffe3e7c0000)
liboobi2c.so => /home/nli/project/d6/d6_oob_update_tool/./build/bin/liboobi2c.so (0x00007febb7c9a000)
libc.so.6 => /lib64/libc.so.6 (0x00007febb78d4000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007febb76d0000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007febb74b0000)
/lib64/ld-linux-x86-64.so.2 (0x00007febb7ea0000)
路径
环境变量
LD_LIBRARY_PATH
运行时默认搜索动态库的路径
编译指定
-Wl,-rpath=<path>
设置执行时搜索动态库的路径
├───build
│ ├───bin
│ │ ├───libxx1.so
│ │ └───run
│ └───obj
└───src
固定路径
-Wl,-rpath=./
设置./
路径为动态库搜索路径
正确执行
cd ./build/bin
./run
----
出错
cd ./build
./bin/run
运行时./
路径为./build
,动态库位置./build/bin
,所以识别不到动态库。
动态路径
-Wl,-rpath='$$ORIGIN'
参考
正确执行
cd ./build/bin
./run
----
正确执行
cd ./build
./bin/run
保持可执行文件与动态库路径的固定关系,可以更换执行时所在路径。