簡體   English   中英

將帶有GCC的C ++應用靜態編譯為二進制文件

[英]Statically compile a C++ app with GCC into a binary

如何在針對Unix的Ubuntu計算機上使用GCC靜態編譯應用程序? 我將如何針對32位/ 64位計算機以及具有不同版本的GLIBC的計算機,或者通常依賴於unix C ++應用程序的計算機? 然后,我想以二進制形式分發此應用程序,然后在unix機器上運行它,而無需從源代碼進行編譯。

同樣,我可以在Windows上編譯該應用程序,使其在Unix上運行嗎?

要編譯它以便在Linux上運行,只需像這樣編譯它:

g++ -o myapp myapp-a.cop myappb.cop -L mylib1

這應該適用於大多數版本的Linux,以及某些版本的FreeBSD。

這不是靜態鏈接到libstdc ++,但這也許是一個更好的方法。 根據經驗,即使syscall abi發生更改,您也應動態鏈接OS c lib以允許您的應用程序運行。

您可以從64位計算機上強制使用32位編譯器,並且將'-m32'作為標志。 它將編譯模式設置為32位。

至於在Windows上編譯:是的。 你能行的。 這稱為交叉編譯 首先,您需要編譯一個針對Linux的工具鏈。

這是創建靜態編譯的僅32位可執行文件的方式,該可執行文件可在任何已知的Linux上運行,而不會抱怨缺少庫:

g++ -m32 -static -o myprog myprog.cpp

缺點之一是可執行文件的最小大小至少為600 KB。

注意:如果遇到編譯錯誤,請確保已安裝軟件包g++-multilib

暫無
暫無

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

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