查看: 4106|回复: 11

[求助] MDK511编译时,怎么把我没有调用的函数都编译进去了呢?(...

[复制链接]

该用户从未签到

196

主题

495

帖子

0

金牌会员

Rank: 6Rank: 6

积分
1482
最后登录
2020-12-3
发表于 2015-8-25 11:07:13 | 显示全部楼层 |阅读模式
本帖最后由 teclimber 于 2015-9-18 16:14 编辑

各位,
MDK511编译时,怎么把我没有调用的函数都编译进去了呢?我没有开优化。如何在不开优化的情况下,如何才能不把我程序中定义了但没有调用的程序,编译进我的代码呢?
我知道答案 目前已有11人回答

评分

参与人数 1NXP金币 +3 收起 理由
小七 + 3

查看全部评分

回复

使用道具 举报

该用户从未签到

19

主题

401

帖子

0

金牌会员

Rank: 6Rank: 6

积分
1114
最后登录
2017-8-16
发表于 2015-8-25 11:25:30 | 显示全部楼层
添加到工程中的文件都要编译吧
回复 支持 反对

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2015-8-25 12:31:18 | 显示全部楼层
使用头文件的形式定义下,然后在调用相关头文件。
回复 支持 反对

使用道具 举报

该用户从未签到

196

主题

495

帖子

0

金牌会员

Rank: 6Rank: 6

积分
1482
最后登录
2020-12-3
 楼主| 发表于 2015-8-25 12:46:17 | 显示全部楼层
FSL_TICS_ZJJ 发表于 2015-8-25 12:31
使用头文件的形式定义下,然后在调用相关头文件。

都是这样定义的,或许和编译器有关吧。cw10.6就不会这样。但是cw10.6生成的启动文件也太大了,占了好几K.所以,我就跑到MDK上编译来了。
回复 支持 反对

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2015-8-25 13:23:13 | 显示全部楼层
teclimber 发表于 2015-8-25 12:46
都是这样定义的,或许和编译器有关吧。cw10.6就不会这样。但是cw10.6生成的启动文件也太大了,占了好几K. ...

你好。按道理应该是会编译上来的。
我这这边在main.c中定义一个函数,然后没有调用它, 在map文件里面还是可以看到这个函数占用了内存的。
你可以查看下你的map文件,看看你的函数是否在里面。
回复 支持 反对

使用道具 举报

该用户从未签到

196

主题

495

帖子

0

金牌会员

Rank: 6Rank: 6

积分
1482
最后登录
2020-12-3
 楼主| 发表于 2015-8-25 13:29:30 | 显示全部楼层
FSL_TICS_ZJJ 发表于 2015-8-25 13:23
你好。按道理应该是会编译上来的。
我这这边在main.c中定义一个函数,然后没有调用它, 在map文件里面还 ...

是会占用的,我把一些没有调用的函数,注释掉程序就会小很多。所以,应该是都编译进去了。正常编译器应该不会的。应该哪里可以设置吧。gcc不会这样。我又不敢轻易开优化,在cw下开过一次,程序直接就跑不起来了。
回复 支持 反对

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2015-8-25 13:34:09 | 显示全部楼层
teclimber 发表于 2015-8-25 13:29
是会占用的,我把一些没有调用的函数,注释掉程序就会小很多。所以,应该是都编译进去了。正常编译器应该 ...

所以,如果不想编译进来,你就把相关代码去掉。
或者用条件编译,自己在头文件中加下,这样编译以后使用。
回复 支持 反对

使用道具 举报

该用户从未签到

196

主题

495

帖子

0

金牌会员

Rank: 6Rank: 6

积分
1482
最后登录
2020-12-3
 楼主| 发表于 2015-8-25 13:34:46 | 显示全部楼层
FSL_TICS_ZJJ 发表于 2015-8-25 13:23
你好。按道理应该是会编译上来的。
我这这边在main.c中定义一个函数,然后没有调用它, 在map文件里面还 ...

刚在网上找到一个方法,刚试了一下,貌似可以,程序一下减小了1K多。不知道会不会产生其他问题。有时间去测试一下。


设置选项为: Options->C/C++  中勾选上 “One ELF Section per Function”复选框

它的意思可能是,每一个函数单独建立一个 elf,这样link 时可以仅把需要的函数编译进代码里面
回复 支持 反对

使用道具 举报

该用户从未签到

196

主题

495

帖子

0

金牌会员

Rank: 6Rank: 6

积分
1482
最后登录
2020-12-3
 楼主| 发表于 2015-8-25 13:35:47 | 显示全部楼层
FSL_TICS_ZJJ 发表于 2015-8-25 13:34
所以,如果不想编译进来,你就把相关代码去掉。
或者用条件编译,自己在头文件中加下,这样编译以后使用 ...

这样太费劲了。
回复 支持 反对

使用道具 举报

该用户从未签到

145

主题

4926

帖子

0

金牌会员

Rank: 6Rank: 6

积分
9267
最后登录
1970-1-1
发表于 2015-8-25 13:41:46 | 显示全部楼层
teclimber 发表于 2015-8-25 13:34
刚在网上找到一个方法,刚试了一下,貌似可以,程序一下减小了1K多。不知道会不会产生其他问题。有时间去 ...

这个方法还真不错。
刚试了下,我定义的未用函数,勾选了这个,在map里面看到有一段remove中,把这个未用函数给去掉了。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-7-28 11:50 , Processed in 0.117998 second(s), 34 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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