linux x86下依赖于动态链接库so的cpp程序编译
来源:互联网 发布:t54原型车数据 编辑:程序博客网 时间:2024/05/21 11:27
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两个目录作为默认的库搜索路径,所以使用这两个目录中的库时不需要进行设置搜索路径即可直接使用。
对于处于默认库搜索路径之外的库,需要将库的位置添加到库的搜索路径之中。
- linux x86下依赖于动态链接库so的cpp程序编译
- Linux下gcc编译生成动态链接库*.so文件
- LINUX下简单的编译和使用动态链接库[compile .so use c++ in linux]
- LINUX下简单的编译和使用动态链接库[compile .so use c++ in linux]
- LINUX下简单的编译和使用动态链接库[compile .so use c++ in linux]
- Linux下编译出来的动态链接库缺少so后缀的问题解决
- Linux下的动态链接库.so文件的使用
- Linux下的动态链接库.so文件的使用
- Linux下的动态链接库.so文件的使用
- Linux下的动态链接库.so文件的使用
- linux下生成动态链接库.so
- Linux 下 动态链接库 .so 的生成和使用
- linux 下 动态链接库 so 之间的符号冲突
- Linux下动态链接库so的生成与使用
- Linux下的动态链接库(DLL) - so文件
- 同时能在Win32和Linux下编译的动态链接库(dll、so)导出类示例
- linux下.so动态库的生成、编译、调用
- Linux下gcc编译生成动态链接库*.so文件并调用它
- crontab执行脚本中文乱码,手动执行没有问题
- java水仙花数
- Apache与Tomcat整合
- rqnoj-389
- 开源 免费 java CMS - FreeCMS1.3-系统配置
- linux x86下依赖于动态链接库so的cpp程序编译
- Python多线程
- LeetCode - Pascal's Triangle II
- Windows Azure 社区新闻综述(#61 版)
- bundle文件
- 解决关于图片过大而造成OutOfMemoryError方法
- main.box源码用网络盒子本地调试Asp程序
- KMP算法之总结篇(必懂KMP)
- Redis教程(1)