当前位置:   article > 正文

g++无法找到动态库问题_找不到动态库

找不到动态库

一、错误发现

在使用各种各样的C++库的时候,有的时候会遇到找不到的问题,特此整理此博客来记录gcc/g++链接动静态库的过程。

二、include两种查找方式

#include<>表示默认系统路径下寻找。
#include""表示先在当前路径寻找,再去系统路径寻找。

三、路径

1.gcc与g++路径

  • gcc/g++的可执行文件的路径都在/usr/bin中。

2.头文件路径

gcc与g++所查找的头文件所在路径有两种种情况:

(1)默认路径

默认指定到/usr/include路径。但是在一些编写驱动模块的设定中,会强制gcc不去搜索默认路径,此时可以加-nostdinc选项,此时必须使用-l来指定路径。

(2)使用-l指定路径寻找。

(1)假设文件结构如下:
test.c
test/test.h
(2)此时有两种方式来找到这个头文件:

第一种方式在test.c的这样包含头文件:#include"test/test.h"
第二种方式在gcc执行的时候:gcc -l test test.c

(3)gcc搜索头文件的顺序

先按顺序查找-l指定的路径,然后在gcc的环境变量中寻找,最后再去内定目录中查找。
注意这只是头文件的指定,下面介绍库文件的查找方法。

3.库文件路径

(1)默认路径

动态库的默认搜索路径在/lib和/usr/lib中。

(2)编译时指定路径

-L后的内容表示的是库的路径,-l后表示的是库的名称。

(3)在配置文件中指定路径

在配置文件/etc/ld.so.conf中指定动态库搜索路径,其中他的每一行都是一个搜索路径。每次编辑完该文件之后都要执行ldconfig来进行刷新。

(4)通过环境变量

通过环境变量LD_LIBRARY_PATH指定动态库搜索路径。
在这里插入图片描述
同时也可以使用export指令来更新环境变量。

(5)查找顺序

1.编译目标代码时指定的动态库搜索路径。
2.环境变量LD_LIBRARY_PATH指定的动态库搜索路径。
3.配置文件/etc/ld.so.conf中指定的动态库搜索路径。
4.默认的动态库搜索路径/lib。
5.默认的动态库搜索路径/usr/lib。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/201006
推荐阅读
相关标签
  

闽ICP备14008679号