成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

為什么Golang開發(fā)的軟件單文件直接丟到各種Linux系統(tǒng)就能運行?

開發(fā) 后端 Linux
那么Go語言是如何獨步江湖的呢?Go的編譯器生成的靜態(tài)鏈接的GO應用二進制文件,已包含了可供完整載入內存和需要的所有指令。

提到跨平臺開發(fā),就首先想到C語言,準確的說應該叫ANSI C。

ANSI C是由美國國家標準協(xié)會(ANSI)及國際標準化組織(ISO)推出的關于C語言的標準。ANSI C 主要標準化了現(xiàn)存的實現(xiàn), 同時增加了一些來自 C++ 的內容 (主要是函數(shù)原型) 并支持多國字符集 (包括備受爭議的三字符序列)。ANSI C 標準同時規(guī)定了 C 運行期庫例程的標準。一些開源項目根據(jù)ANSI C標準進行開發(fā)后,可移植行就非常好。

但無奈,隨著新指令集的CPU不斷出現(xiàn),如果開發(fā)者自己要從ANSI C方式去編碼,實現(xiàn)減少由于不同軟硬件架構的差異對上層應用的影響,那屬實要做很大的基礎工作。

所以當更加專業(yè)的語言Go出來后,由于設計者基于既往設計C語言的成功經(jīng)驗去粗取精,又結合近二三十年來的CPU架構和操作系統(tǒng)、云計算的新趨勢,而造出了Go這樣的多平臺多CPU通吃的語言。正是這種定位,所以Go語言在可執(zhí)行文件的鏈接方面就與眾不同。

比如當小白不小心把linux系統(tǒng)的底層加載程序 ld-linux.so 文件刪掉了,

準備跑路吧~~ 

因為此后系統(tǒng)內所有 C/C++/Python/Nodejs/PHP/Java等語言開發(fā)編譯的可執(zhí)行文件,全都啟動失敗,出現(xiàn)莫名其妙的錯誤,比如cp命令是存在于 /usr/bin/cp 路徑的文件,但此時調用cp,報錯No such file or directry 。

這是因為以上Python等所列的語言,本質上都是C語言開發(fā)的,它們的可執(zhí)行文件的底層鏈接的系統(tǒng)動態(tài)庫,要想運行都先依賴于 ld-linux.so 幫它們處理好ELF的二進制可執(zhí)行文件、鏈接庫的代碼段落、數(shù)據(jù)段等內容加載到內存,然后CPU根據(jù)二進制指令執(zhí)行代碼邏輯,處理數(shù)據(jù),完成計算任務。而這個底層的 ld-linux.so 動態(tài)庫文件一旦自身不保,那么,其他依賴的軟件當然全部異常。

而我們之前編譯的Go的main函數(shù)測試二進制文件main。仍然能啟動。

那么Go語言是如何獨步江湖的呢?可以推斷,Go的鏈接方式不使用ld-linux.so。

Go的編譯器生成的靜態(tài)鏈接的GO應用二進制文件,已包含了可供完整載入內存和需要的所有指令。既然這樣,不管是Linux發(fā)行版A還是B系統(tǒng)自帶的glibC 的版本是否過時,是否過新,跟GO能否正常運行關系不大。GO軟件運行所需的都已經(jīng)自給自足了。也因此Go可以帶著它的干糧,不管丟到哪里就可以在那里運行。

當然,這離不開Go語言開發(fā)團隊背后做了很多底層適配兼容,幫應用開發(fā)者省去了這份操心。也讓這門語言兌現(xiàn)了它所吹過的牛。

下圖為Golang 最新版1.21.5所支持的CPU架構、操作系統(tǒng)信息,實際Go目前能支持的已經(jīng)超過這些平臺范圍。部分小眾的系統(tǒng)架構也支持,圖中未列出。

責任編輯:趙寧寧 來源: 深入理解Linux
相關推薦

2020-12-30 10:04:46

userMapper接口

2020-10-21 09:16:49

Linux開源操作系統(tǒng)

2014-08-04 15:30:39

Linux開源軟件

2022-02-13 20:31:26

SpringBootjarmanifests

2020-05-07 16:30:32

Spring BootJava

2023-11-30 08:16:19

SpringjarTomcat

2024-04-03 09:01:34

SpringTomcat容器

2021-04-18 18:12:07

Linux開發(fā)操作系統(tǒng)

2021-03-10 09:40:50

Linux命令文件

2011-01-10 15:55:20

LinuxWindowsWine

2010-06-13 15:26:42

2016-11-08 11:06:20

2019-07-29 07:50:42

Linux內存Windows

2018-07-27 09:41:45

Linux系統(tǒng)服務器

2020-07-15 09:29:23

Python開發(fā)工具

2010-06-07 14:13:10

Linux 開發(fā)工具

2020-07-06 07:37:58

Linux虛擬

2011-03-24 09:28:47

Linux文件系統(tǒng)barrier

2020-09-09 09:38:47

GoLangNodeJS編程語言

2010-01-05 17:16:51

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产福利久久 | 日日干夜夜操天天操 | 成人精品一区二区户外勾搭野战 | 性做久久久久久免费观看欧美 | 成人影院在线 | 成人免费在线视频 | 中文字幕一区二区三区乱码在线 | 亚洲精品视频播放 | 久久久国产一区二区 | 中文字幕二区三区 | 农夫在线精品视频免费观看 | 亚洲福利视频一区二区 | 天天干夜夜| 日韩在线欧美 | 国产性色视频 | www日韩高清 | 北条麻妃一区二区三区在线视频 | 99精品国产一区二区青青牛奶 | 免费看a | 欧美日一区二区 | 国产一级免费视频 | 日韩欧美国产一区二区 | 亚洲人成人一区二区在线观看 | 欧美精品乱码久久久久久按摩 | 国产成人叼嘿视频在线观看 | 欧美日韩在线观看一区二区三区 | 人人看人人射 | 成人欧美一区二区三区视频xxx | 日本成人三级电影 | 亚洲一区二区国产 | 中文字幕在线三区 | 在线啊v | 青青青伊人 | 国产精品片aa在线观看 | 中文av在线播放 | 秋霞a级毛片在线看 | 国产精品无码久久久久 | 国产精品美女久久久久久免费 | 91新视频 | 黄色网址在线免费播放 | 91高清在线观看 |