Bjö*_*lex 5 c++ linker g++ vxworks c-preprocessor
我有一个源文件,我使用选项预处理-E
和-P
(使用GCC 4.1.2为基于vxWorks的嵌入式平台).所有其他选项与编译文件时相同.这些选项是:
-Wall
-march=pentium
-nostdinc
-O0
-fno-builtin
-fno-defer-pop
-g
-c
-o
Run Code Online (Sandbox Code Playgroud)
以及所有包含路径.现在,当我编译这个预处理文件时,生成的对象文件比直接编译原始文件要小得多(约30%).然后当我链接程序时,链接器会抱怨缺少符号(全部在用户代码中),这在使用原始源文件时也不会发生.为什么会有区别?有没有办法让这项工作?
您确定您没有遗漏-D
命令行中的任何定义吗?您的结果将与由于条件而未编译的部分一致。
另一种可能性(因为您没有具体命名编译器)是您gcc -E
在 vxWorks 环境中使用通用交叉编译器而不是特定于架构的交叉编译器。跨 gcc 将预定义一些您需要的变量gcc -E
。