去找吧!我把所有資料都藏在那了 - 通向 Section 航道的旅程

2 分鐘閱讀

前言

「我要成為海賊王!」
這句話大家應該不陌生吧。寫程式有時候就像在 偉大航道上尋寶
這次的寶藏不是什麼「One Piece」,而是──把設定檔藏在 ELF Binary 裡的秘密空間

最近剛好遇到一個需求:想把資料包進程式裡,方便部署,但又不想讓人隨便亂改。
就像在跟同學們玩「海上捉迷藏」一樣,所以筆者決定把設定藏進一個 神秘的 section,然後用小工具去 patch。

於是乎本篇就誕生了。

go cgo elf
繼續閱讀 →

從 glibc 到 musl : 靜態編譯上的新選擇

2 分鐘閱讀

前言

在 Go 世界裡,可移植性 一直是它引以為傲的特性。大部分時候,我們只要 go build 就能得到一個幾乎純靜態的二進位,拿去其他機器執行也不太會出問題。然而,這種「幾乎」背後,跟 cgocmd/link 的運作有很大關係。本文將以 cgo 為核心,延伸到 linkmodemusl-gcc 的應用,帶同學們理解 Go 執行檔在靜態與動態鏈結上的差異。

go cgo gcc
繼續閱讀 →

認識 Cgo:Go 與 C 語言的橋樑

2 分鐘閱讀

前言

在撰寫 Go 程式的過程中,有時候我們會遇到這樣的情境:某些功能已經有穩定的 C 函式庫可以使用,若能直接呼叫這些現有資源,就能避免重複造輪子。
Go 語言本身提供了 cgo 這個工具,讓我們能順利地在 Go 程式中嵌入並呼叫 C 程式碼。

本文會帶你從基礎開始認識 cgo,並透過範例說明如何在 Go 專案中使用它。

gcc go cgo
繼續閱讀 →