回答
在海灣合作委員會,-c
開關是你想要的。
-c
的意思是「編譯,不要鏈接」,並且你得到一個name.o
輸出文件。
使用編譯器的-c
選項(適用於GCC,選項可能與其他c編譯器相同)。
從GCC的手冊頁:
當你調用GCC,它一般不會 預處理,編譯,彙編 和鏈接。 「整體選項」 允許您在 中間階段停止此過程。例如, -c選項表示不運行鏈接程序。然後輸出由彙編器輸出的對象 組成。
鏈接階段是查找main()
的步驟,如果找不到它,就會投訴。
可以編譯單個文件不main
,但你不能鏈接他們當然不能運行他們,因爲他們是不完整的程序。請注意,valgrind不是一個靜態分析工具,而是一個運行時工具,因此它在沒有鏈接到可運行程序的單個轉換單元上沒有用處。
如果你想測試單個文件,常見的做法是包括像每個文件中的以下內容:
#ifdef UNIT_TEST
int main(int argc, char **argv)
{
/* unit test code goes here */
}
#endif
而且隨着-DUNIT_TEST
編譯文件。
假設你的hello.c:
#include<stdio.h>
#include<stdlib.h>
_start()
{
exit(my_main());
}
int my_main()
{
printf("Hello");
return 0;
}
編譯如下:
gcc -nostartfiles hello.c
,你可以得到一個可執行出來。
非常有趣的是。謝謝! – 2013-10-09 01:25:07
您可以添加引文 – 2013-10-30 04:02:13
- 1. 如何在不編譯源代碼的情況下安裝Numpy
- 2. 在沒有主機的情況下使用源代碼控制
- 3. 在沒有Visual Studio的情況下編譯Microsoft的LoginAdmin.dll代碼
- 4. 如何在沒有visual studio的情況下編譯C文件
- 5. 編譯器可以在沒有擴展的情況下編譯代碼嗎?
- 6. 編譯器是否會在沒有主體的情況下內聯函數?
- 7. 在沒有.NET Framework 4.0的情況下使用Windows SDK 7.1編譯C++代碼
- 8. 如何在不編譯代碼的情況下修改全局資源DLL?
- 9. 如何在沒有原型的情況下查找C函數?
- 10. 是否有可能在不進入REPL的情況下編譯clojure源代碼?
- 11. 在沒有gnustep的情況下編譯目標c程序
- 12. 是否可以在沒有lib的情況下編譯C++?
- 13. 如何在沒有dll的情況下編譯GNU sed?
- 14. 如何在沒有avx的情況下爲kvm centos編譯dpdk
- 15. 如何在沒有Eclipse的情況下編譯greenDao示例?
- 16. 如何在沒有DynamicInvoke的情況下編譯MethodCallExpression?
- 17. 如何在沒有QtCreator的情況下編譯Qt 5項目?
- 18. MyEclipse如何在沒有javac的情況下編譯Java類?
- 19. 如何在沒有證書的情況下編譯設備?
- 20. 如何在沒有運行SBT的情況下編譯測試
- 21. 如何在沒有Shade插件的情況下編譯DropWizard?
- 22. 在沒有配置和代碼簽名的情況下編譯GKRocket演示
- 23. 如何在沒有matlab的情況下在labview中使用matlab源代碼?
- 24. 有沒有辦法在不編譯的情況下使用scipy.interpolate rbf函數?
- 25. 任何可以在沒有系統修改的情況下編譯Xen源代碼的Linux發行版?
- 26. 如何在沒有C++的情況下編譯時間斷言11
- 27. 如何編譯C程序以在沒有命令框的情況下運行?
- 28. 如何在不編譯它的情況下在不同的體系結構上編譯相同的C代碼?
- 29. 如何在沒有硬編碼NetworkCredentials的情況下使用System.Net.Mail?
- 30. 如何在沒有編碼的情況下更改MPEG2-ts?
我覺得'-c'對於大多數C編譯器來說是相當標準的。 – JeremyP 2011-04-23 13:03:28