1.编译test.cpp:依赖的动态链接库和test.cpp同一目录,名称为:libxmnetsdk.so,编译命令如下:
g++ test.cpp -L. -lxmnetsdk -o test
2.查看编译好的执行文件依赖的库:
root@ubuntu:/studio/frameForward# ldd test
linux-gate.so.1 => (0x00a8c000)
libxmnetsdk.so => not found
libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0x00994000)
libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0x003eb000)
libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0x005cc000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0x00b30000)
/lib/ld-linux.so.2 (0x005fb000)
(1)可以将依赖的so拷贝到/lib或者/usr/lib下
(2)安装在其他目录,需要将其添加到/etc/ld.so.cache文件中,步骤如下
编辑/etc/ld.so.conf文件,加入库文件所在目录的路径
运行ldconfig,该命令会重建/etc/ld.so.cache文件
(3)(临时指定)
root@ubuntu:/studio/frameForward# ldd test
linux-gate.so.1 => (0x00f47000)
libxmnetsdk.so => /usr/lib/libxmnetsdk.so (0x004a4000)
libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0x00cf1000)
libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0x00f5c000)
libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0x00110000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0x0012c000)
libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0x00294000)
BTW:库文件在连接(静态库和共享库)和运行(仅限于使用共享库的程序)时被使用,其搜索路径是在系统中进行设置的。
一般Linux系统把 /lib和 /usr/lib两个目录作为默认的库搜索路径,所以使用这两个目录中的库时不需要进行设置搜索路径即可直接使用。
对于处于默认库搜索路径之外的库,需要将库的位置添加到库的搜索路径之中。
g++ test.cpp -L. -lxmnetsdk -o test
2.查看编译好的执行文件依赖的库:
root@ubuntu:/studio/frameForward# ldd test
linux-gate.so.1 => (0x00a8c000)
libxmnetsdk.so => not found
libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0x00994000)
libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0x003eb000)
libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0x005cc000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0x00b30000)
/lib/ld-linux.so.2 (0x005fb000)
发现libxmnetsdk.so无法找到,需要设置so路径;
(1)可以将依赖的so拷贝到/lib或者/usr/lib下
(2)安装在其他目录,需要将其添加到/etc/ld.so.cache文件中,步骤如下
编辑/etc/ld.so.conf文件,加入库文件所在目录的路径
运行ldconfig,该命令会重建/etc/ld.so.cache文件
(3)(临时指定)
#export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/libpath
root@ubuntu:/studio/frameForward# ldd test
linux-gate.so.1 => (0x00f47000)
libxmnetsdk.so => /usr/lib/libxmnetsdk.so (0x004a4000)
libstdc++.so.6 => /usr/lib/i386-linux-gnu/libstdc++.so.6 (0x00cf1000)
libm.so.6 => /lib/i386-linux-gnu/libm.so.6 (0x00f5c000)
libgcc_s.so.1 => /lib/i386-linux-gnu/libgcc_s.so.1 (0x00110000)
libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0x0012c000)
libpthread.so.0 => /lib/i386-linux-gnu/libpthread.so.0 (0x00294000)
/lib/ld-linux.so.2 (0x00775000)
BTW:库文件在连接(静态库和共享库)和运行(仅限于使用共享库的程序)时被使用,其搜索路径是在系统中进行设置的。
一般Linux系统把 /lib和 /usr/lib两个目录作为默认的库搜索路径,所以使用这两个目录中的库时不需要进行设置搜索路径即可直接使用。
对于处于默认库搜索路径之外的库,需要将库的位置添加到库的搜索路径之中。