很多網站都會提供編譯好的release版本的程序,同時提供程序源碼下載的入口,供用戶下載之後編譯的。

二者有什麼區別嗎。


例如 TensorFlow. 使用 Anaconda 或者 pip 安裝源安裝 tensorflow 或者 tensorflow-gpu 並不能包含一些特性(比如 CPU 訓練加速)。自己編譯的話可以選擇包含這一功能。

Vim 也可以通過自己編譯來 enable 一些插件語言的支持,比如 Python, Ruby.

Nginx 也可以通過自己編譯來提高性能。
這個區別不是很明顯嗎?就像做菜。一個是直接把做好的菜端給你,拿起筷子就能喫。另一個是給你食材和菜譜,自己洗自己燒,然後才能喫。

有些軟體的特定功能是需要編譯期開啟的。比如選擇鏈接不同的底層庫等等。

另外就是網站提供的編譯好的二進位通常使用的是最通用的編譯選項。為保證通用性沒辦法開很高級的處理器支持。但你自己編譯可以讓編譯器針對你自己的CPU進行優化,使用你CPU支持的所有指令集來優化代碼。這樣會提升一些性能。


可執行文件有些功能不是預設就有的。源碼編譯可以通過選項來添加功能,可以根據不同需要定製化


直接下載release包對程序員來說透明度不夠,安裝下來隱藏了太多東西,用源碼編譯能讓程序員瞭解更多過程,更大的掌控感,比如大多數工程都提供編譯選項進行不同優化,而且使用項目假如出了問題,方便查找(概率較低)。

主要區別在與編譯選項,一般開源項目的編譯選項都挺多,使用release您就不用考慮這些了,使用源代碼編譯就可以通過各種編譯選項定製自己的版本。

當然,剛牛逼的是還可以修改代碼編譯自己的特屬版本。


因為操作系統啊,release版可能只針對特定的操作系統編譯的。而源代碼可以自己去編譯對應操作系統的程序。


推薦閱讀:
相關文章