我有一组使用gcc和make编译的C文件。构建过程正常工作。 我想知道如果我可以在编译期间获得一个包含所有源代码但没有任何预处理器宏的C文件。编译多个源文件时创建一个C文件
回答
如果包括在gcc编译器中的所有文件一次,你可以使用
gcc -E main.c other.c another.c
这也将包括可能使用stdlib函数-nostdinc
-E选项正常工作。非常感谢 ! – 2011-05-15 07:35:40
你不能 - 通常你会调用编译器来编译一个源文件,产生一个目标文件。稍后,您将调用所有目标文件的链接器来创建可执行文件 - 它没有可用的原始C源代码。
但是,您可以创建一个单独的shell脚本,该脚本用于调用gcc的-E
选项仅用于预处理源文件,然后使用cat
实用工具将所有源放入单个文件中。
使用gcc'-E'选项只执行文件的预处理 – CodeButcher 2011-05-12 08:25:18
@CodeButcher:谢谢,更新了我的答案。 – 2011-05-12 08:27:12
您可以使用-save-temps
选项来获取中间输出。但是,它将是每个源文件的一个输出文件。每个源文件分别编译并表示一个不能混合的编译单元。
您也可以使用-E
选项,但只能运行预处理器而不能继续编译。
一个简单的做法是制作一个包含所有其他源文件的文件。
$cat *.c > metafile.c
这将构建一个这样的文件,这取决于你如何设置你“编译一次”和IFNDEF的这个文件很可能无法编译自身。
在另一方面,如果你想在一个文件中,所有的预处理器宏的已展开和评估,那么答案是添加以下的gcc什么:
-save-temps
然后将该文件。②将包含展开和评估宏
+1,但应该是'> metafile.c',而不是'> metafile.cpp' – 2011-05-12 09:24:00
- 1. 编译多个源文件
- 2. 在c编译多个源文件
- 3. 将多个C源文件编译成一个唯一的目标文件
- 4. AnnotationProcessor使用多个源文件创建一个文件
- 5. MinGW在编译多源程序文件时是否创建目标文件?
- 6. 使用g ++将多个源文件编译为一个.o
- 7. g ++编译多个文件
- 8. 编译多个Ocaml文件
- 9. javac编译多个文件
- 10. Win32资源文件多个译文
- 11. 编译多个Typescript文件到一个JavaScript文件
- 12. 编译多个.jsx文件到一个.js文件
- 13. 编译一个SASS /罗盘文件分成多个CSS文件
- 14. 将多个文件编译在一起?
- 15. 可以编译多个源文件夹到多个目标文件夹
- 16. makefile,编译源文件列表卡在第一个文件
- 17. 编译一个.ss文件
- 18. 为tempdb创建多个DATA文件时创建LOG文件?
- 19. 为多个文件创建一个msbuild
- 20. 如何将多个目标C文件编译成一个库?
- 21. 如何将多个Rust文件编译到一个C库中?
- 22. 从java中的一个文本文件创建多个文件
- 23. 在c中创建一个文件和一个文件夹#
- 24. 用.txt文件编译多个C++文件?
- 25. 在GCC中编译C文件时出错(一个文件中有多个文件)
- 26. C++“不命名一个类型” - 无法编译源文件
- 27. 编译多个**在GNU改变**源文件一次让
- 28. 用C自动创建多个文件
- 29. Dev C++编译C源文件
- 30. java编译器创建多少个文件?
为什么你需要这个?你想要解决什么实际问题? – 2011-05-12 11:03:40
我正在尝试为C构建一个特定用途的静态分析器。因此,我想收集一个文件中的所有源以简化对具有多个文件的复杂项目的分析。 – 2011-05-15 07:38:44