搜尋
首頁電腦教學電腦知識如何在ubuntu伺服器交叉編譯不同系統的可執行程式?

相信很多C程式設計師都有過這樣的疑問,如果一台伺服器有不同的gcc版本怎麼辦,它們之間會互相影響嗎?

答案是會的,我們一般使用gcc編譯原始檔時,這個gcc是系統環境變數PATH中最開始找到的gcc。

如果要交叉編譯不同系統的程式呢?這就需要多套的編譯工具鏈了,分別使用對應的工具鏈編譯目標系統的程式。

預設路徑

  • 編譯器路徑:通常放置在 /usr/bin 目錄下。
  • 頭檔路徑:系統層級的頭檔通常放在 /usr/include 中,標準函式庫的頭檔一般都在 /usr/local/include
  • 函式庫路徑:系統動態函式庫通常位於 /usr/lib 與 /lib,靜態函式庫通常也會放在這裡或 /usr/local/lib

手動設定路徑

編譯器路徑

更改編譯器路徑的環境變數通常不是必要的,因為 /usr/bin 應該已經在你的 PATH 環境變數中了。如果你需要使用不同的編譯器,你可以直接使用其完整路徑或修改 PATH 環境變數來指向你的編譯器,例如:

export PATH=/path/to/your/compiler:$PATH

這樣會在現有的 PATH 前加入你指定的路徑,讓系統先在此處尋找執行檔。

設定交叉編譯器

#我需要在Ubuntu上編譯ARM架構的程序,使用Marvell提供的工具鏈。這個工具鏈包含了用於交叉編譯ARM架構程式的gcc和其他工具,它們都具有相同的前綴。

arm编译:这样设置前缀后就可以使用交叉编译器
export CROSS_COMPILE=/home/zheng/marvell-tools-12006.0/bin/aarch64-marvell-linux-gnu-

使用环境变量进行编译:

${CROSS_COMPILE}gcc-o hello_arm hello_arm.c

如何在ubuntu伺服器交叉編譯不同系統的可執行程式?

如何在ubuntu伺服器交叉編譯不同系統的可執行程式?#查看可執行程式系統架構

然後分別執行這兩個程式:

如何在ubuntu伺服器交叉編譯不同系統的可執行程式?

#目前系統的架構:uname -m

如何在ubuntu伺服器交叉編譯不同系統的可執行程式?

#一般情況下gcc是會依照系統預設的PATH路徑去尋找編譯時所需要的對應的工具元件

所以如果要編譯不同架構的程序,就需要有多套的工具鏈,如果都把這些工具鏈的路徑加到系統的環境變數PATH中則會產生衝突,會優先使用前面路徑中的同名工具,例如PATH設定為:

export PATH=/path/arm_toolchain/bin:/usr/bin:/path/x86_toolchain/bin

/path/arm_toolchain/bin和/usr/bin,/path/x86_toolchain/bin都有名稱為gcc的工具,那麼前面的就會覆蓋後面的,每次執行都會優先使用最早被配對到的gcc工具

缺點:無法動態指定不同架構的編譯工具鏈,需要頻繁修改PATH環境變數。

改進方法:為每個工具鏈指定對應的環境變數,這樣就可以動態區分不同的編譯器。

這種辦法適合臨時切換工具鏈,編譯不同架構的程序,如果是大型C程序一般是透過設定檔中指定了編譯器的路徑,然後使用make,或meson等建置工具進行建置。

以上是如何在ubuntu伺服器交叉編譯不同系統的可執行程式?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文轉載於:每日运维。如有侵權,請聯絡admin@php.cn刪除
如何找到和備份《生化危機4節》?這是指南! -  Minitool如何找到和備份《生化危機4節》?這是指南! - MinitoolApr 14, 2025 am 12:50 AM

您是否想知道如何找到《生化危機4儲蓄》?如何備份《生化危機4節》? PHP.CN的這篇文章為您提供了3種備份《生化危機4節》的方法。現在,繼續閱讀。

如何限制Windows上的登錄嘗試數如何限制Windows上的登錄嘗試數Apr 14, 2025 am 12:49 AM

如果有人試圖通過輸入大量關鍵組合來訪問計算機,則您的計算機的打開風險更高。因此,很需要限制登錄嘗試的數量。怎麼做?閱讀此php.cn帖子。

找不到CFGMGR32.DLL?通過簡單的方法輕鬆解決問題找不到CFGMGR32.DLL?通過簡單的方法輕鬆解決問題Apr 14, 2025 am 12:48 AM

cfgmgr32.dll丟失的錯誤通常會惹惱人們很多,並且在窗戶中留下了更嚴重的問題。那麼,當您遇到CFGMGR32.DLL時,您該怎麼辦? PHP.CN網站上的這篇文章將告訴您一些方法。

修復:鎖屏幕超時不起作用修復:鎖屏幕超時不起作用Apr 14, 2025 am 12:47 AM

您是否曾經遇到過Windows鎖定屏幕超時的問題?幸運的是,該帖子可從PHP.CN.提供幾種可行的解決方案。應用這些修復程序,您可以有效地解決這個煩人的問題。

Windows 11 23H2已發布!如何在PC上獲取它?Windows 11 23H2已發布!如何在PC上獲取它?Apr 14, 2025 am 12:46 AM

微軟已經發布了Windows 11 23H2(Windows 11 2023更新)。您要在設備上安裝此更新嗎?其中有什麼新功能?如何立即獲取此更新?現在,您可以從此php.cn獲取信息

如何繞過Windows Defender Windows 10/11? -  Minitool如何繞過Windows Defender Windows 10/11? - MinitoolApr 14, 2025 am 12:45 AM

Windows Defender可以保護您的計算機和設備上的文件免受惡意軟件和病毒的攻擊或感染。但是,有時,由於某種原因,您需要繞過Windows Defender。在PHP.CN網站上的這篇文章中,我們將介紹3 W

提供的6種最佳數據方法是PC上的錯誤類型提供的6種最佳數據方法是PC上的錯誤類型Apr 14, 2025 am 12:44 AM

在嘗試將文件從移動電話複製或將文件傳輸到計算機時,您可能會得到錯誤的類型錯誤消息。如果您不知道如何解決它,則PHP.CN網站上的這篇文章可以為您提供幫助。

發現如何輕鬆地將Excel重置為默認設置發現如何輕鬆地將Excel重置為默認設置Apr 14, 2025 am 12:43 AM

是否要恢復您對Microsoft Excel的更改?在這裡,有關PHP.CN軟件的本文旨在向您展示如何以最有效的方式將Excel重置為Windows 10中的默認設置。

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
1 個月前By尊渡假赌尊渡假赌尊渡假赌

熱工具

Dreamweaver Mac版

Dreamweaver Mac版

視覺化網頁開發工具

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

WebStorm Mac版

WebStorm Mac版

好用的JavaScript開發工具

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中