你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

谁知道keil .c 和.h 文件的大概的编译过程,我们都知道...

[复制链接]
ssssss 提问时间:2018-8-16 16:58 /
阅读主题, 点击返回1楼
收藏 评论22 发布时间:2018-8-16 16:58
22个回答
ssssss 回答时间:2018-8-17 11:16:57
hellole 发表于 2018-8-17 10:41
编译过程内核启动BootLoader,c程序由main()函数进入,
所以编译时会根据main所用到的从.h文件去寻找相关 ...

编译打印不是你说的这样
44.png
ssssss 回答时间:2018-8-17 11:19:26
stm1024 发表于 2018-8-17 09:21
为了把问题说清楚,我觉得有必要区分一下编译和链接。
编译的时候c文件编译过程中,会把同名头文件一起编译 ...

谢谢大神指导
butterflyspring 回答时间:2018-8-17 11:56:58
这跟ide有关呀

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

Inc_brza 回答时间:2018-8-17 17:08:01
其实楼上各位说的有对也有错,如14楼所说,需要区分下编译,链接,但是我想补充一下,最好区分一下
预编译,编译,链接。
不管是h还是c文件,其实作用都是一样的,没有什么头文件和源代码文件区分,当然这个理解是基于编译器的,而不是对人的,所以看官别看了就开始喷。例如,我可以再c文件里包含c文件,也可以再h文件里包含c文件,可以再h文件里包含h文件,当然c文件也可以包含h文件,随你喜欢。
预编译,其实就是编译器会先把所有文件中的宏都给展开,这里包含条件编译,常量等等,各位看官也可以再自身的编译器中查看list文件,这是预编译后产生的文件。
然后再进行汇编,把所有的源代码(这里不指明是c还是h,应该可以说是都存在),生成.o文件,
接下来进行链接,最后生成总的hex或者elf或者axf之类的格式文件,当然可以再生成bin文件。
最后 补充的就是,以上这个过程,不管是什么平台,什么ide,什么编译器,都是一样的步骤。

评分

参与人数 1蝴蝶豆 +4 收起 理由
zero99 + 4

查看全部评分

ssssss 回答时间:2018-8-17 17:33:14
Inc_brza 发表于 2018-8-17 17:08
其实楼上各位说的有对也有错,如14楼所说,需要区分下编译,链接,但是我想补充一下,最好区分一下
预编译 ...

版主说的很对,很有启发,谢谢
ssssss 回答时间:2018-8-17 17:33:50
stm1024 发表于 2018-8-17 09:21
为了把问题说清楚,我觉得有必要区分一下编译和链接。
编译的时候c文件编译过程中,会把同名头文件一起编译 ...

有点道理
tanic 回答时间:2018-8-17 17:59:55
了解一下  makefile   就会懂得所有编译器怎么走的

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

ho 回答时间:2018-8-19 10:12:22
wwwheihei 发表于 2018-8-17 11:16
编译打印不是你说的这样

.s文件就是BootLoader,汇编文件中里面会有一句话指向main()。

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

12

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版