我可以告诉gcc / ld排除未使用的模块吗?

时间:2012-02-24 14:26:57

标签: gcc avr avr-gcc avr-studio5

我想知道是否可以告诉gcc / ld将未使用的模块放入输出文件中。

假设我有模块a.cb.cc.ca.cb.c相互依赖,其中一个包含main(),并且由于任何原因,c.c的任何部分都未被引用。

gcc -c a.c
gcc -c b.c
gcc -c c.c

如果我将这些内容捆绑到一个库中,那么c.c中的代码就不会出现在输出中:

ar rcs abc.a a.o b.o c.o
gcc abc.a

但是,如果我将.o文件直接提供给gcc,则来自c.c的代码。 c.o已包含在内。

gcc a.o b.o c.o

我可以通过任何方式告诉gcc将未使用的模块放入库中吗?

我正在编写AVRμC并使用AVR Studio,它不允许创建库,但是想省略未使用的源文件,具体取决于构建配置。

1 个答案:

答案 0 :(得分:3)

我不知道它是否可以在AVR上使用,但您可以要求GCC在编译时使用-ffunction-sections -fdata-sections将每个符号放在其自己的部分中。然后,在链接步骤中,您可以使用-Wl,--gc-sections要求ld删除未使用的部分。