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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux下编写c++,include的那些头文件在啥地方相关的知识,希望对你有一定的参考价值。

在linux下有众多的文件,而编写c++时经常要include一些头文件,那这些头文件是放在哪个文件夹下的
麻烦说的详细点,包括那些标准c++的头文件,以及非标准的
还有如果我有一些自己编好的,或是下载到的头文件,想以后编写时能直接include,那我这些文件应该放在哪个文件夹下
我的linux是ubuntu
谢谢
/usr/include/这些我也知道的,但是这个文件夹下还是有很多的文件和文件夹的,那到底哪些是用来放c++的那些头文件的

C/C++程序在linux下被编译和连接时,GCC/G++会查找系统默认的include和link的路径,以及自己在编译命令中指定的路径。

1、#include <stdio.h>,直接到系统指定目录去查找头文件。

系统默认路径为:/usr/include,/usr/local/include,/usr/lib/gcc-lib/i386-Linux/2.95.2/include(gcc库文件的路径,各个系统不一致)

2、#include "stidio.h",会先到当前目录查找头文件,如果没找到在到系统指定目录查找。

3、gcc编译时查找头文件,按照以下路径顺序查找:

gcc编译时,可以设置-I选项以指定头文件的搜索路径,如果指定多个路径,则按照顺序依次查找。比如,gcc -I /usr/local/include/node a.c  

gcc会查找环境变量C_INCLUDE_PATH,CPLUS_INCLUDE_PATH中指定的路径。

扩展资料:

应用程序代码编译过程:

编译器根据头文件提供的库函数接口形式,来编译代码,然后生成目标文件;然后,再使用链接器将这个目标文件与系统库链接;最终生成应用程序。代码包含了自己写的内容,还有系统提供好的现成的库函数,整个结合起来才形成一个完整的程序。

库函数的头文件,在编译的时候被使用,而库函数的代码段(库文件),在链接的时候被使用。

example:

应用程序代码在使用一个系统调用的时候,例如printf()函数,需要指定包含的头文件stdio.h;另外,在链接的时候对应的链接libc.a(笔者电脑文件所在目录:/usr/lib/i386-linux-gnu/libc.a)。

总结一下,编写应用程序,需要使用linux系统提供的库函数。具体实现起来,需要头文件和库文件。头文件是需要我们编写应用程序的时候,在源文件开头添加的;而库文件则需要配置编译环境进行指定搜索目录。

参考技术A 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的效果。

以上两种方式均可以达到指定链接库搜索路径的效果。
参考技术B /usr/include/
这个目录下的文件大多是C 标准头文件
/usr/include/c++
这个下面就是C++标准头文件

你自己的头文件建议放在项目目录下 ,如果是通用库,那么在 /usr/include下面建立一个文件夹用来存放私有的的头文件, 通常我是在项目家目录下创建一个include目录 然后link到 /usr/include 下

/usr/include下的很多文件夹看文件夹名字就大概知道是哪方面的头文件了

比如 net protocols python2.x sys X11等本回答被提问者采纳
参考技术C 这个还主要看你将的GCC在哪里,一般编程用的C++头文件,都在gcc目录下的include文件夹下。 参考技术D 我的是puppy,C++标准库放在 /usr/include/c++ 文件夹

以上是关于linux下编写c++,include的那些头文件在啥地方的主要内容,如果未能解决你的问题,请参考以下文章

Linux下编写c语言头文件,编译时出现“函数未定义”

如何在linux/ubuntu下编写c++网络通信代码

在不使用 matlab 头文件和库的情况下编写 MAT 文件

是否可以在没有包含保护且没有多个定义错误的情况下编写头文件?

linux下编写并运行python和C++程序

在linux下编译C,用GCC,#include 需要 "FILENAME" 或 <FILENAME>是怎么回事?