我有一个源文件,我使用选项对其进行预处理-E
and -P
(对于基于 vxWorks 的嵌入式平台使用 GCC 4.1.2)。所有其他选项与我编译文件时相同。这些选项是:
-Wall
-march=pentium
-nostdinc
-O0
-fno-builtin
-fno-defer-pop
-g
-c
-o
以及所有包含路径。现在,当我编译这个预处理文件时,生成的目标文件比直接编译原始文件时要小得多(大约 30%)。当我链接程序时,链接器抱怨缺少符号(全部在用户代码中),而在使用原始源文件时,这种情况再次不会发生。为什么会有差异?有什么办法可以让这个工作吗?
你确定你没有遗漏任何一个-D
从你的命令行定义?您的结果将与由于条件而未编译的部分一致。
另一种可能性(因为您没有具体命名编译器)是您使用的是通用的gcc -E
而不是适用于您的 vxWorks 环境的特定于架构的交叉编译器。跨 gcc 将预定义一些您需要的变量gcc -E
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)