簡體   English   中英

build cpp程序在不同版本的linux上運行

[英]build cpp program run on different version linux

一些linux程序例如mongodb二進制文件可以在不同版本的linux上運行,無論主機gcc版本和glibc版本如何。

怎么做? 靜態鏈接所有庫? 但我聽說glibc不應該是靜態鏈接的。

要創建獨立於已安裝庫的可執行文件,必須靜態鏈接它。

但是,如果應用程序的構建不是非常大/復雜,那么通常更好的方法是分發源代碼並在目標系統上構建/構建,或者為最常用的變體預構建。

您不希望靜態鏈接glibc(以及應用程序可能使用的所有其他庫)的原因是即使最簡單的應用程序也會變成大約700K-1MB。 鑒於我的發行版在/ usr / bin中有1900個條目,這將使其最小約2GB,現在它是400MB(包括像clang,emacs和skype這樣的野獸,所有這些都以非靜態鏈接的形式超過7MB) - 它們可能每個都有十幾個庫依賴項 - 例如,如果使用靜態鏈接編譯它,則會從10MB以下增長到大約100-120MB。

當然,通過靜態鏈接,每個應用程序的所有代碼都需要作為單獨的副本加載到內存中。 因此整體內存使用量大幅增加。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM