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

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

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系统提供的库函数。具体实现起来,需要头文件和库文件。头文件是需要我们编写应用程序的时候,在源文件开头添加的;而库文件则需要配置编译环境进行指定搜索目录。

(1)编辑include/linux/socket.h,定义新的协议域和相关结构:

定义新的协议域:

#define PF_NEW_DOMAIN 17

定义新的套接字结构:

struct sockaddr_new_domain {

short sn_family/* 套接字类型 */

char sn_data[128]/* 地址数据 */

}

(2)编辑net/socket.c,定义新的协议函数:

static struct net_proto_family new_domain_family_ops = {

.family = PF_NEW_DOMAIN,

.create = new_domain_create,

.owner = THIS_MODULE,

}

/* 新协议创建函数 */

int new_domain_create(struct net *net, struct socket *sock,

int protocol, int kern)

{

/* 创建新的套接字 */

return 0

}

(3)编辑net/core/sock.c,把新的协议函数注册到内核:

/* 注册新协议函数 */

void __init new_domain_init(void)

{

sock_register(&new_domain_family_ops)

}

(4)编辑net/core/dev.c,实现新的协议处理函数:

/* 新的协议处理函数 */

int new_domain_handler(struct sk_buff *skb)

{

/* 处理新的协议数据包 */

return 0

}

(5)编辑net/core/net_namespace.c,把新的协议处理函数注册到内核:

/* 注册新的协议处理函数 */

void __init new_domain_init(void)

{

dev_add_pack(&new_domain_packet_type)

}


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

原文地址: http://outofmemory.cn/bake/11272083.html

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

发表评论

登录后才能评论

评论列表(0条)

保存