日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

為什么Golang開發的軟件單文件直接丟到各種Linux系統就能運行?

來源: 責編: 時間:2023-12-20 09:23:08 230觀看
導讀提到跨平臺開發,就首先想到C語言,準確的說應該叫ANSI C。ANSI C是由美國國家標準協會(ANSI)及國際標準化組織(ISO)推出的關于C語言的標準。ANSI C 主要標準化了現存的實現, 同時增加了一些來自 C++ 的內容 (主要是函數原型) 并

提到跨平臺開發,就首先想到C語言,準確的說應該叫ANSI C。GKO28資訊網——每日最新資訊28at.com

ANSI C是由美國國家標準協會(ANSI)及國際標準化組織(ISO)推出的關于C語言的標準。ANSI C 主要標準化了現存的實現, 同時增加了一些來自 C++ 的內容 (主要是函數原型) 并支持多國字符集 (包括備受爭議的三字符序列)。ANSI C 標準同時規定了 C 運行期庫例程的標準。一些開源項目根據ANSI C標準進行開發后,可移植行就非常好。GKO28資訊網——每日最新資訊28at.com

但無奈,隨著新指令集的CPU不斷出現,如果開發者自己要從ANSI C方式去編碼,實現減少由于不同軟硬件架構的差異對上層應用的影響,那屬實要做很大的基礎工作。GKO28資訊網——每日最新資訊28at.com

GKO28資訊網——每日最新資訊28at.com

所以當更加專業的語言Go出來后,由于設計者基于既往設計C語言的成功經驗去粗取精,又結合近二三十年來的CPU架構和操作系統、云計算的新趨勢,而造出了Go這樣的多平臺多CPU通吃的語言。正是這種定位,所以Go語言在可執行文件的鏈接方面就與眾不同。GKO28資訊網——每日最新資訊28at.com

比如當小白不小心把linux系統的底層加載程序 ld-linux.so 文件刪掉了,GKO28資訊網——每日最新資訊28at.com

GKO28資訊網——每日最新資訊28at.com

準備跑路吧~~ GKO28資訊網——每日最新資訊28at.com

因為此后系統內所有 C/C++/Python/Nodejs/PHP/Java等語言開發編譯的可執行文件,全都啟動失敗,出現莫名其妙的錯誤,比如cp命令是存在于 /usr/bin/cp 路徑的文件,但此時調用cp,報錯No such file or directry 。GKO28資訊網——每日最新資訊28at.com

這是因為以上Python等所列的語言,本質上都是C語言開發的,它們的可執行文件的底層鏈接的系統動態庫,要想運行都先依賴于 ld-linux.so 幫它們處理好ELF的二進制可執行文件、鏈接庫的代碼段落、數據段等內容加載到內存,然后CPU根據二進制指令執行代碼邏輯,處理數據,完成計算任務。而這個底層的 ld-linux.so 動態庫文件一旦自身不保,那么,其他依賴的軟件當然全部異常。GKO28資訊網——每日最新資訊28at.com

而我們之前編譯的Go的main函數測試二進制文件main。仍然能啟動。GKO28資訊網——每日最新資訊28at.com

那么Go語言是如何獨步江湖的呢?可以推斷,Go的鏈接方式不使用ld-linux.so。GKO28資訊網——每日最新資訊28at.com

Go的編譯器生成的靜態鏈接的GO應用二進制文件,已包含了可供完整載入內存和需要的所有指令。既然這樣,不管是Linux發行版A還是B系統自帶的glibC 的版本是否過時,是否過新,跟GO能否正常運行關系不大。GO軟件運行所需的都已經自給自足了。也因此Go可以帶著它的干糧,不管丟到哪里就可以在那里運行。GKO28資訊網——每日最新資訊28at.com

當然,這離不開Go語言開發團隊背后做了很多底層適配兼容,幫應用開發者省去了這份操心。也讓這門語言兌現了它所吹過的牛。GKO28資訊網——每日最新資訊28at.com

下圖為Golang 最新版1.21.5所支持的CPU架構、操作系統信息,實際Go目前能支持的已經超過這些平臺范圍。部分小眾的系統架構也支持,圖中未列出。GKO28資訊網——每日最新資訊28at.com

GKO28資訊網——每日最新資訊28at.com

GKO28資訊網——每日最新資訊28at.com

GKO28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-50029-0.html為什么Golang開發的軟件單文件直接丟到各種Linux系統就能運行?

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 掌握Python的高級用法:技巧、技術和實用性示例

下一篇: 一文搞懂Go中select的隨機公平策略:并發編程的黃金法則

標簽:
  • 熱門焦點
Top 主站蜘蛛池模板: 大方县| 留坝县| 岐山县| 鄄城县| 札达县| 山阴县| 昌平区| 维西| 民勤县| 江永县| 江源县| 金塔县| 祁阳县| 金坛市| 犍为县| 依安县| 两当县| 安陆市| 绥化市| 遵义市| 元朗区| 阜城县| 吴江市| 平潭县| 上高县| 田阳县| 怀化市| 龙井市| 晴隆县| 上杭县| 丹阳市| 历史| 恭城| 雅安市| 綦江县| 滦南县| 个旧市| 通城县| 大渡口区| 罗江县| 贞丰县|