linux包含头文件路径,linux下的头文件和库文件搜索路径

include的header文件,连结数据库,系统定义,总共有下列来源指定gcc去那找。

当初在编译时指定的(在~gcc/gcc/collect2.c:locatelib()

写在specs内的

后来用-D -I -L指定的

gcc环境变量设定(编译的时候)

ld.so的环境变量(这是run time的时候)

====================================================

====================================================

1.头文件

gcc 在编译时怎么去寻找所需要的头文件 :

※所以header file的搜寻会从-I开始

※然后找gcc的环境变量 C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC_INCLUDE_PATH

※再找内定目录

/usr/include

/usr/local/include

/usr/lib/gcc-lib/i386-linux/2.95.2/include

/usr/lib/gcc-lib/i386-linux/2.95.2/../../../../include/g++-3

/usr/lib/gcc-lib/i386-linux/2.95.2/../../../../i386-linux/include

库文件不过如果装gcc的时候,是有给定的prefix的话,那么就是

/usr/include

prefix/include

prefix/xxx-xxx-xxx-gnulibc/include

prefix/lib/gcc-lib/xxxx-xxx-xxx-gnulibc/2.8.1/include

2.库文件

cos()等函式库的选项要多加 -lm

编译的时候:

※gcc会去找-L

※再找gcc的环境变量LIBRARY_PATH

※再找内定目录 /lib /usr/lib /usr/local/lib 这是当初compile gcc时写在程式内的

3.运行时动态库的搜索路径

方法一:在设置文件/etc/ld.so.conf中指定动态库搜索路径

方法二:通过环境变量LD_LIBRARY_PATH指定动态库搜索路径(当通过该环境变量指定多个动态库搜索路径时,路径之间用冒号":"分隔)

方法三:在编译目标代码时指定该程式的动态库搜索路径(还能在编译目标代码时指定程式的动态库搜索路径。

这是通过gcc 的参数"-Wl,-rpath,"指定(如例3所示)。当指定多个动态库搜索路径时,路径之间用冒号":"分隔)

四:默认的动态库搜索路径/lib

五:默认的动态库搜索路径/usr/lib

能通过执行可执行文件pos得到的结果不同获知其搜索到了哪个动态库,从而获得第1个动态库搜索顺序,然后删除该动态库,

再执行程式pos,获得第2个动态库搜索路径,再删除第2个被搜索到的动态库,

如此往复,将可得到Linux搜索动态库的先后顺序。

程式pos执行的输出结果和搜索到的动态库的对应关系如表1所示

程式pos输出结果 使用的动态库 对应的动态库搜索路径指定方式

./                   ./libpos.so                          编译目标代码时指定的动态库搜索路径

/root/test/env/lib   /root/test/env/lib/libpos.so         环境变量LD_LIBRARY_PATH指定的动态库搜索路径

/root/test/conf/lib  /root/test/conf/lib/libpos.so        设置文件/etc/ld.so.conf中指定的动态库搜索路径

/lib                 /lib/libpos.so                       默认的动态库搜索路径/lib

/usr/lib             /usr/lib/libpos.so                   默认的动态库搜索路径/usr/lib

综合以上结果可知,动态库的搜索路径搜索的先后顺序是:

1.编译目标代码时指定的动态库搜索路径;

2.环境变量LD_LIBRARY_PATH指定的动态库搜索路径;

3.设置文件/etc/ld.so.conf中指定的动态库搜索路径;

4.默认的动态库搜索路径/lib;

5.默认的动态库搜索路径/usr/lib

阅读(912) | 评论(0) | 转发(0) |

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 Linux 系统中,可以通过设置环境变量来添加公用文件路径。 在 Bash 终端中,可以使用 export 命令设置环境变量。 例如添加 /usr/local/include 路径,可以在终端中运行: ```bash export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/local/include ``` 你也可以在 .bashrc 或者 .bash_profile 中添加上面的语句,然后保存, 这样每次打开终端都会自动执行这个语句,就可以每次都加上这个路径了 除此之外,还有其他方式,比如在 Makefile 中添加 -I/usr/local/include 选项,或者在 IDE 里面设置文件路径等。 ### 回答2: 在Linux系统中,要添加公用文件路径,可以通过以下步骤进行: 1. 打开终端并进入命令行界面,使用管理员权限登录。 2. 首先确定要添加的公用文件路径,例如 "/usr/local/include"。 3. 打开 "/etc/profile" 文件,可使用任何文本编辑器进行编辑,例如命令 "sudo vi /etc/profile"。 4. 在文件中找到并定位到环境变量 "PATH"。 5. 在 "PATH" 变量的最后添加该公用文件路径,以冒号(:)分隔,例如:PATH=$PATH:/usr/local/include。 6. 保存文件并退出编辑器。 7. 为了使更改生效,需要使用 "source" 命令重新加载环境变量,命令为:source /etc/profile。 8. 现在,您可以在终端或任何编译器中使用添加的公用文件路径进行编译和运行程序了。 此外,如果您只想在特定用户的环境变量中添加公用文件路径,可以使用以下步骤: 1. 打开终端并进入命令行界面,用普通用户登录。 2. 打开用户的 ".bashrc" 文件,可以使用任何文本编辑器进行编辑,例如命令 "vi ~/.bashrc"。 3. 在文件的末尾添加以下行:export PATH=$PATH:/usr/local/include。 4. 保存文件并退出编辑器。 5. 为了使更改生效,可以关闭终端并重新打开或使用 "source" 命令重新加载用户的 ".bashrc" 文件,命令为:source ~/.bashrc。 6. 现在,您只能在该特定用户的环境变量中使用添加的公用文件路径进行编译和运行程序。 以上就是在Linux系统中添加公用文件路径的方法。请根据自己的实际需求选择适合的方法。 ### 回答3: 在Linux中,要添加公用文件路径,可以通过修改环境变量来实现。 首先,打开终端窗口并登录到Linux系统。然后,通过编辑用户的个人shell配置文件(例如~/.bashrc或~/.bash_profile)来设置环境变量。 使用文本编辑器打开配置文件,例如运行以下命令来编辑~/.bashrc文件: $ vi ~/.bashrc 在文件的末尾添加以下代码行,将公用文件路径添加到环境变量中: export C_INCLUDE_PATH=/path/to/include:$C_INCLUDE_PATH 请将/path/to/include替换为实际的公用文件路径。 保存并关闭文件后,运行以下命令以使配置文件生效: $ source ~/.bashrc 现在,您已成功将公用文件路径添加到环境变量中。 要验证路径是否已正确添加,可以运行以下命令来显示环境变量的值: $ echo $C_INCLUDE_PATH 如果您看到输出中包含已添加的路径,则意味着路径已成功添加。 现在,无论您在终端窗口中执行何种编译工作,系统都将在该路径中查找文件

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值