linux不到动态链接库的解决⽅案
有时候系统中明明存在某个动态链接库,但是编译运⾏程序的时候就是发现不到,⽽且怎么设置也不起作⽤,可以试试下⾯这个终极解决⽅案。。。。
解决⽅案:将动态链接库所在的⽬录添加到 /etc/f 末尾。,执⾏以下命令sudo /sbin/ldconfig 使得修改⽣效。
这⾥总结⼀下相关知识:
1.头⽂件搜索路径先后排序:
1. 当前路径;
2. 编译时指定的路径,⽐如--prefix=/usr/local,查的时候会去/usr/local/include/⽬录.h⽂件;
3. gcc的specs⽂件⾥(参考:);
4. 使⽤-I参数指定的⽬录(优先级最⾼);
5. gcc的环境变量设置 CPATH C_INCLUDE_PATH CPLUS_INCLUDE_PATH OBJC_INCLUDE_PATH ;
6. 系统标准的include⽬录。
GCC looks in several different places for headers. On a normal Unix system, if you do not instruct it otherwise, it will look for
headers requested with #include <file> in: /usr/local/include libdir/gcc/target/version/include /usr/target/include /usr/include For C++ programs, it will also look in libdir/../include/c++/version, first. In the above, target is the canonical name of the system GCC was configured to compile code for; often but not always the same as the canonical name of the system it runs on. version is the version of GCC in use.
2.动态库的搜索路径先后顺序:
1. 编译⽬标代码时指定的动态库搜索路径;
2. 环境变量LD_LIBRARY_PATH指定的动态库搜索路径;
3. 配置⽂件/etc/f中指定的动态库搜索路径;
4. 默认的动态库搜索路径/lib;
5. 默认的动态库搜索路径/usr/lib。
3.通过修改系统环境变量设置搜索路径:
使⽤ gcc 编译时将头⽂件路径添加到 C_INCLUDE_PATH 系统环境变量中;
使⽤ g++ 编译时将头⽂件路径添加到 CPLUS_INCLUDE_PATH 系统环境变量中;
将动态连接库路径添加到 LD_LIBRARY_PATH 系统环境变量中;
include怎么用将静态库路径添加到 LIBRARY_PATH 系统变量中。
4.通过添加编译选项设置搜索路径:
-I 头⽂件所在的路径
-L 库⽂件所在的路径(包括静态库和动态库)
-l 指定库⽂件
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论