![](/img/trans.png)
[英]Why does the size of the binary executable increase by different amounts for the same block of code?
[英]Same source code, different executable size?
在 AIX 中,不同版本的編譯器可以使可執行文件(或庫)大小不同嗎?
什么會影響可執行文件/庫的大小?
在這里,我們有一堆舊的可執行文件和庫,它們不是受版本控制的源代碼。 我們需要弄清楚可執行文件是根據我們擁有的源代碼構建的。 所以我們再次構建它,但結果(exec,libs)的大小不一樣。
我試過..
任何幫助、建議、鏈接都會有所幫助。 謝謝你。
什么會影響可執行文件/庫的大小?
不同版本的編譯器。
當然! 它可以生成非常不同的二進制文件,不僅大小不同。 它從不同位置的代碼開始,對於相同的源代碼完全不同的匯編。
不同的編譯選項。
它必須改變大小! 如果您針對大小或速度進行優化,結果肯定會有所不同。 想想循環展開...
不同的操作系統版本及其庫(如 libm.a、libpthread.a ..)。
因為它們也是用不同的編譯器編譯的,所以答案是遞歸的 :-)
更多的?
也許是一個無窮無盡的清單? 鏈接時文件的排序、不同的鏈接器選項、...
我的提示:
可執行文件的大小只是第一次檢查。 您可以擁有相同大小的不同可執行文件,這很清楚。
即使您使用相同的編譯器和相同的庫並運行相同的操作系統,您也需要使用相同的構建腳本/make 進行構建以獲得相同的結果。 如果有任何不同(編譯器/庫/編譯器和/或鏈接器標志、文件順序不同),則鏈接的可執行文件不同!
簡而言之:如果您不能為您的構建重現環境的精確副本,您將永遠不會看到相同的可執行文件,即使源是相同的!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.