当前位置:首页 > 公众号精选 > 嵌入式大杂烩
[导读]点击上方「嵌入式大杂烩」,选择「置顶公众号」第一时间查看嵌入式笔记! 前言 前两天有群友在群里问了如下问题: 大概就是用C语言写了一个socket程序,在Linux下使用gcc编译没问题,而在Windows下使用gcc(装了MinGW,编译环境已经装好)编译会提示没有找到s

点击上方「嵌入式大杂烩」,选择「置顶公众号」第一时间查看嵌入式笔记!

前言

前两天有群友在群里问了如下问题:


大概就是用C语言写了一个socket程序,在Linux下使用gcc编译没问题,而在Windows下使用gcc(装了MinGW,编译环境已经装好)编译会提示没有找到socket相关的头文件。

为什么会出现这样的问题?本篇笔记我们来简单分析一下。

头文件从哪来?

在进行分析之前,我们需要思考一个问题:我们的C编程相关的头文件从哪来?

Windows系统:

对于Windows系统,其本身是不带有C语言的一些库及其头文件。我们要进行C语言编程,必须要安装一些开发包(IDE或者MinGW、Cygwin等)。

而我们C编程需要的头文件就在这些开发包中。比如:

MinGW中:

Dev-C++中:

keil中:

我们单片机开发中,有时候也会用到一些标准库,比如keil中:


关于MinGW、Cygwin的内容可看历史文章:

Cygwin的介绍及使用

MinGW的介绍及使用

Linux系统:

对于Linux系统,C语言的库及其头文件都是属于系统中的一部分,只要安装了编译工具就可以就行C程序的开发。其相关的头文件在/usr/include中:

Windows、Linux下C编程?

首先,我们准备一个demo.c代码:

#include <stdio.h>

int main(void)
{
 printf("hello world\n");
 return 0;
}

在Windows下使用gcc进行编译(编译命令:gcc -v demo.c),加-v参数可以看到编译过程的头文件搜索的一些路径信息及其它信息:


这几个路径就是我们编译demo.c时需要搜索头文件的路径,即从这几个路径中查找stdio.h头文件,该头文件所在的路径为:


这个路径是一个很重要的路径,我们C编程使用的一些标准库头文件都放在这个目录下。C语言的标准库包含哪些头文件?可以到这个网站查看:

https://en.cppreference.com/w/c/header


可以看到,这个C:\MinGW\include路径中不仅包含有着一些标准库头文件,还包含很多其它的头文件。这些头文件就是与Windows 系统相关的一些头文件,比如:


类似这些头文件是为了开发专门的Windows 程序专用的,比如Windows API编程


编译运行:


这个程序用到了windows.h头文件,这是我们Windows下C编程特有的头文件,与Windows系统密切相关。这样的代码在Linux下使用gcc编译是编译不通过的。

这里需要特别提醒的是:上面列举的Windows API编程程序是为了说明才举例出来的,Windows API编程虽说也可以编写一些界面程序,但基本上已经被淘汰了,所以不用花时间去学。

下面看一下Linux下gcc编译的一些情况:


/usr/include路径:


可以看到这里放着一些标准库头文件及其它头文件。而socket编程相关的头文件在/usr/include/sys中:


从上面的举例说明中可以很清楚的知道,对于socket编程,Windows、Linux下socket编程也有点不太一样,具体如下:


所以,那位群友把Linux下写的socket程序拷贝到Windows下编译则自然编译出错,即找不到相应头文件。

综上,我们可以在Windows下基于C语言开发一些与Windows密切相关的程序;我们也可以在Linux下基于C语言开发一些与Linux密切相关的程序。

以上就是本次的分享,如有错误,欢迎指出!谢谢

为了便于公众号读者交流学习,小编创建了相关相关交流群。目前,嵌入式大杂烩交流①群已经满员了。

嵌入式大杂烩交流②群刚创建,坑位有限,感兴趣的朋友可以扫码下方二维码进群,二维码7月9日前有效:


欢迎大家进群交流、共同进步。同时,我也会关注一些大家问的一些问题,从中挑选一些具有代表性的、并且在我知识范围内的问题写出相关文章做分享。

猜你喜欢

Linux下socket编程实例

Windows下socket编程实例

Linux下动态链接与静态链接

Windows下动态链接与静态链接

C语言、嵌入式中几个非常实用的宏技巧

C语言、嵌入式应用:TCP通信实例分析

C语言、嵌入式重点知识:回调函数

C语言、嵌入式位操作精华技巧大汇总

最后

若觉得文章不错,转发分享、在看,也是我们继续更新的动力。

在公众号内回复更多资源可免费获取嵌入式资料。期待你的关注~

免责声明:本文内容由21ic获得授权后发布,版权归原作者所有,本平台仅提供信息存储服务。文章仅代表作者个人观点,不代表本平台立场,如有问题,请联系我们,谢谢!

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭