回答
我想你是靜態鏈接標準庫的調試版本。
首先,可執行文件的大小取決於使用標準庫的動態鏈接還是靜態鏈接。如果您靜態鏈接您的可執行文件,那麼調試信息是大小的另一個貢獻者。
在數字(我沒有在手GDC):
- 與LDC2編譯,靜態鏈接:315KiB
- 與調試信息LDC2編譯,靜態鏈接:2.9MiB
- 編譯與DMD,動態鏈接:51KiB
- 與調試信息DMD編譯,靜態鏈接:77KiB
據的I k現在gdc不使用/ support -gc-section,它也有助於可執行文件的大小。
我應該如何動態鏈接它?我是一個初學者,對不起。謝謝。 – user5555332
@interprog,那麼你如何動態鏈接? :) 謝謝! –
@MenelionElensúlë我其實並沒有找到確切的方式,我甚至不知道我正在做的是動態鏈接的正確方法。實際上,我找到了動態鏈接C的方法 - http://dlang.org/dll-linux.html – user5555332
- 1. 爲什麼程序頭可執行?
- 2. 執行程序關閉後,爲什麼Runnable仍然在可執行的線程池執行程序中執行?
- 3. 爲什麼不去執行子程序
- 4. 當輸入大於9時,爲什麼這個程序崩潰?
- 5. 爲什麼程序在執行代碼context.getAssets().list(「」)?時出現錯誤SIG:9?
- 6. 爲什麼-9認爲大於1?
- 7. 爲什麼堆棧程序段具有可執行屬性
- 8. 什麼是c#測試驅動程序,爲什麼執行
- 9. 爲什麼Haskell/GHC可執行文件在文件大小上如此之大?
- 10. 爲什麼我的應用程序執行從上到下
- 11. 爲什麼'^ 9等於9?
- 12. 爲什麼我的多線程程序按順序執行?
- 13. 爲什麼可執行文件不可執行?
- 14. 什麼我設置ProductID到HOST-RESOURCES-MIB
- 15. 爲什麼我的C++可執行文件如此之大?
- 16. 爲什麼我的C++輸出可執行文件太大了?
- 17. Gfortran和大量實用程序:爲什麼我不能將它們鏈接到我的可執行文件中?
- 18. 爲什麼「\ 9」給「9」而「\ 7」爲空?
- 19. 線程執行的順序是什麼?
- 20. 這是什麼C++程序不執行?
- 21. 程序執行是非順序的。爲什麼?
- 22. 什麼是函數.__ code__跨多個程序執行的行爲?
- 23. 程序停止並且不執行線程爲什麼?
- 24. 爲什麼printf(「%d%d%d」,++ i,i,i ++)是未定義的行爲?
- 25. 爲什麼這些小型D程序的行爲有所不同?
- 26. 爲什麼catch程序塊爲單個異常執行兩次?
- 27. GCC爲Mersenne程序輸出非常大的可執行文件
- 28. 爲什麼線程不執行IDisposable?
- 29. 爲什麼shell_exec執行多個進程?
- 30. RegExp:why [^ 0-9-]!= [\ D-]?
http://stackoverflow.com/a/2649430/2026276 – Bauss
運行'strip yourprogram',它應該修剪,它的方式。 gcd做了很多調試信息 –
strip確實有效。從10.3 MB到1.8 MB(實際上我對這個尺寸非常滿意)。我認爲你應該發表你的評論作爲這個問題的答案。如果沒有比這更好的答案,我絕對會將此作爲解決方案。謝謝 –
user5555332