OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2282|回复: 7

求助一个编译工程code的大小问题

[复制链接]

2

主题

10

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2018-12-5
在线时间
6 小时
发表于 2018-12-5 20:28:58 | 显示全部楼层 |阅读模式
代码是实验五 外部中断实验(库函数版)
编译环境是mdk5   option c/c++ 的one ELF...没有勾选

在学习中发现了一个现象。把没有调用用的库函数定义和声明注释掉一部分后,编译的code变小了。
在一些.c文件和对应的.h文件增加新函数的定义和声明,code变大(在没有调用新函数的条件下)。
但是在sys.h与sys.c情况却不同。加入定义的新函数后,编译的code大小却不变。甚至把sys.c文件 remove了code大小也不变。
有知道的老哥吗?麻烦讲一讲,谢谢。
这是在编译器的什么地方设置的吗?

实验5 外部中断实验.rar

2.49 MB, 下载次数: 14

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

109

主题

5564

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10572
金钱
10572
注册时间
2017-2-18
在线时间
1914 小时
发表于 2018-12-5 22:20:54 | 显示全部楼层
这个地方可以减小代码量 ,数字越小 ,优化越小,代码量越大
1.JPG
回复 支持 反对

使用道具 举报

2

主题

10

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2018-12-5
在线时间
6 小时
 楼主| 发表于 2018-12-6 00:28:51 | 显示全部楼层
peng1554 发表于 2018-12-5 22:20
这个地方可以减小代码量 ,数字越小 ,优化越小,代码量越大

ok,谢谢
我不只是想把代码单纯变小,而是想知道在整个工程option的设定是一样的情况下。为什么有的.c和.h定义和声明了新函数(没有调用)却改变的code大小。在.map文件里也能查找到新函数符号。但是同样的情况对于sys.c与sys.h却不行。只是在sys.c和.h里声明和定义新函数不改变
code大小。。。打开.map文件也找不到新函数符号。除了在主函数调用sys里定义的新函数的情况下,才会找到。code大小才改变。光声明定义无法改变code大小。

但是在其他文件里定义和声明(没有调用)新函数,却至少在.map的Global Symbols里找到函数符号。同时code的大小也改变了。
这就奇怪了,相同的条件,就因为不同的文件而结果不同。。。疑惑中
回复 支持 反对

使用道具 举报

2

主题

10

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2018-12-5
在线时间
6 小时
 楼主| 发表于 2018-12-6 01:19:10 | 显示全部楼层
(1)   test_sys();  是sys.c里定义的函数  在sys.h  里声明
(2)   test_s();     是beep.c定义的函数   在beep.h里声明
(3)   _test();       是core_cm3.c定义的函数  我在core_cm3.h里加入extern void _test(void);  
core_cm3.c里不include‘’core_cm3.h‘’,但是主函数文件include‘’core_cm3.h‘’,对于主函数调用_test(),应该算是调用外部函数吧?

测试结果:
对于(1)如果主函数不调用 test_sys(),code大小不改变,.map文件里也找不到test_sys符号。
如果调用,code大小改变,map文件里找到两处test_sys符号。

对于(2) 如果主函数不调用 test_s(),code增加,.map文件里Global Symbols找到一处 test_s符号。
如果调用,code继续增加,map文件里Section Cross References又找到一处 test_s符号。(此时一共两处了)。

对于(3) 其结果和(1)一样。

现在的问题就是(1)和(2)的条件一样,但是编译后的结果却不一样。这是为啥咧?

文件我又修改了一下重新上传一遍,有知道的老哥帮忙再看看呗?难道这是bug?

又试了一下,sys.c的其他函数只要是没在主函数调用,在map文件里都找不到符号why?

实验5 外部中断实验(new).rar

2.51 MB, 下载次数: 15

修改后的

回复 支持 反对

使用道具 举报

2

主题

10

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2018-12-5
在线时间
6 小时
 楼主| 发表于 2018-12-6 01:20:57 | 显示全部楼层
peng1554 发表于 2018-12-5 22:20
这个地方可以减小代码量 ,数字越小 ,优化越小,代码量越大

老哥再看看4楼?
回复 支持 反对

使用道具 举报

109

主题

5564

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10572
金钱
10572
注册时间
2017-2-18
在线时间
1914 小时
发表于 2018-12-6 13:52:12 | 显示全部楼层
?? 发表于 2018-12-6 01:20
老哥再看看4楼?

帮顶~~
回复 支持 反对

使用道具 举报

2

主题

10

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2018-12-5
在线时间
6 小时
 楼主| 发表于 2018-12-7 21:29:21 | 显示全部楼层

3Q VERY MUCH
回复 支持 反对

使用道具 举报

2

主题

10

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2018-12-5
在线时间
6 小时
 楼主| 发表于 2018-12-7 21:32:05 | 显示全部楼层
不要沉啊,我顶
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-22 13:34

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表