linux下编写c++,include的那些头文件在什么地方

linux下编写c++,include的那些头文件在什么地方,第1张

C/C++程序在linux下被编译和连接时,GCC/G++会查找系统默认的include和link的路径,以及自己在编译命令中指定的路径。自己指定的路径就不说了,这里说明一下系统自动搜索的路径。

【1】include头文件路径

除了默认的/usr/include,

/usr/local/include等include路径外,还可以通过设置环境变量来添加系统include的路径:

#

C

export

C_INCLUDE_PATH=XXXX:$C_INCLUDE_PATH

#

CPP

export

CPLUS_INCLUDE_PATH=XXX:$CPLUS_INCLUDE_PATH

以上修改可以直接命令行输入(一次性),可以在/etc/profile中完成(对所有用户生效),也可以在用户home目录下的.bashrc或.bash_profile中添加(针对某个用户生效),修改完后重新登录即生效。

【2】link链接库文件路径

链接库文件在连接(静态库和共享库)和运行(仅限于使用共享库的程序)时被使用,其搜索路径是在系统中进行设置的(也可以在编译命令中通过

-l

-L

来指定,这里讲的是使用系统默认搜索路径)。

一般

Linux

系统把

/lib

/usr/lib

/usr/local/lib

作为默认的库搜索路径,所以使用这几个目录中的链接库文件可直接被搜索到(不需要专门指定链接库路径)。对于默认搜索路径之外的库,则需要将其所在路径添加到gcc/g++的搜索路径之中。

链接库文件的搜索路径指定有两种方式:1)修改/etc/so.ld.conf

2)修改环境变量,在其中添加自己的路径

1)在环境变量中添加

动态链接库搜索路径:

export

LD_LIBRARY_PATH=XXX:$LD_LIBRARY_PATH

静态链接库搜索路径:

export

LIBRARY_PATH=XXX:$LIBRARY_PATH

以上修改可以直接命令行输入(一次性),可以在/etc/profile中完成(对所有用户生效),也可以在用户home目录下的.bashrc或.bash_profile中添加(针对某个用户生效),修改完后重新登录即生效。

2)在/etc/ld.so.conf

中添加指定的链接库搜索路径(需要root权限),然后运行

/sbin/ldconfig,以达到刷新

/etc/ld.so.cache的效果。

以上两种方式均可以达到指定链接库搜索路径的效果。

在Linux中函数调用头文件#include <iostream

解决办法:

第一步:

输入命令:

echo|g++ -v -x c++ -E -

查看linux下g++的头文件安装目录,我的查看结果缺少环境变量

正确 结果应该是:

#include "..." search starts here:

#include <...>search starts here:

/usr/include/c++/9

/usr/include/x86_64-linux-gnu/c++/9

/usr/include/c++/9/backward

/usr/lib/gcc/x86_64-linux-gnu/9/include

/usr/local/include

/usr/lib/gcc/x86_64-linux-gnu/9/include-fixed

/usr/include/x86_64-linux-gnu

/usr/include

经过查看对比发现缺少:/usr/lib/gcc/x86_64-linux-gnu/9/include-fixed

第二步:输入编辑命令,以编辑器打开配置段

gedit /etc/profile

第三步:在文件编辑器中输入如图所示

第四步:保存

第五步:在一个项目中,需要在shell脚本文件中激活虚拟环境,然后在指定的虚拟环境中执行python脚本。source是bash shell的内置命令,用于读取filename脚本文件中的命令,并在当前shell执行。由于filename的执行环境是在当前shell,因此常用source命令在配置文件改变后,重新执行配置文件,避免重新登录。

source /etc/profile

第六步:g++指令运行代码测试(此处程序名:test1.c

g++ test1.c -o test1

运行通过!

(1)/:根目录\x0d\x0a(2)/bin:存放启动时所需要的普通程序\x0d\x0a(3)/boot:存放内核及启动所需要的文件\x0d\x0a(4)/dev:存放设备相关的文件\x0d\x0a(5)/etc:存放系统的配置文件\x0d\x0a(6)/home:存放用户文件的主目录,用户数据(cd~可进入自己的主目录)\x0d\x0a(7)/lib:存放启动时所需要的库文件\x0d\x0a(8)/mnt:存放临时的映射文件,通常是一些用来安装其他设备的子目录(如/mnt/cdrom/mnt/floppy)\x0d\x0a(9)/proc:这是一个虚拟的文件系统,存放当前系统的状态(有关进程和系统信息)\x0d\x0a(10)/root:超级用户主目录\x0d\x0a(11)/sbin:存放启动时所需要的系统管理程序\x0d\x0a(12)/tmp:存放启动时产生的临时文件\x0d\x0a(13)/usr:包含一般不需要修改的应用程序,命令程序文件,程序库,手册\x0d\x0a(14)/var:存放系统产生的经常变化的文件\x0d\x0a(15)/var/tmp:存放用户的临时文件\x0d\x0a(16)/usr/lib:存放非启动用的库文件\x0d\x0a(17)/lib/modules/:存放内核模块\x0d\x0a(18)/var/log:存放大多数日志文件\x0d\x0a(19)/var/run:存放运行时的信息\x0d\x0a(20)/var/lib:存放一些系统运行时需要的文件\x0d\x0a(21)/var/spool:存放邮件,新闻及打印序列\x0d\x0a(22)/etc/X11:存放X窗口系统所需要的配置文件\x0d\x0a(23)/etc/init.d:存放启动描述文件,包括各种模块和服务的加载描述\x0d\x0a(24)/etc/rcS.d:存放一些连接到/etc/init.d的文件,根据runlevel的不同而执行不同的描述\x0d\x0a(25)/etc/rc0.d---/etc/rc6.d:存放一些连接文件,只在指定的runlevel下执行相应的描述\x0d\x0a(26)/usr/X11R6,/usr/X11,/usr/Xfree86:存放X窗口系统所需要的文件\x0d\x0a(27)/usr/bin:存放应用程序二进制可执行文件\x0d\x0a(28)/usr/sbin:存放大部分系统程序\x0d\x0a(29)/usr/games:存放游戏程序及相应的数据\x0d\x0a(30)/usr/include:存放c和c++的头文件\x0d\x0a(31)/usr/info:存放GNUInfo程序所需要的数据\x0d\x0a(32)/usr/man:存放man程序所需要的数据\x0d\x0a(33)/usr/src:存放源代码文件\x0d\x0a(34)/usr/doc:存放文档文件\x0d\x0a(35)/usr/local:存放本地计算机所需要的文件\x0d\x0a(36)/usr/shared:存放各种共享文件


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11486937.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存