亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

靜態鏈接 go 程序與 GNU readline

靜態鏈接 go 程序與 GNU readline

Go
守候你守候我 2021-06-06 12:15:16
我正在編寫一個 Go 程序,它使用 GNU readline 庫來實現一個漂亮的命令行界面。為了簡化安裝過程而不用擔心庫版本和其他東西,我想靜態鏈接它。問題是我真的不知道該怎么做。如果我預編譯庫,我將不得不提供我的代碼的多個版本,以及不同版本的 .a 或 .lib readline 庫。為了避免這個問題,我想只將當前的 readline 代碼包含到我的 go 項目中,并讓 go 工具在構建 go 項目時編譯它。但是,要構建 readline 庫,必須使用make. 有沒有辦法告訴 go 工具如何構建 C 代碼?
查看完整描述

2 回答

?
有只小跳蛙

TA貢獻1824條經驗 獲得超8個贊

是的,你當然可以這樣做。我最近在一個不同的項目中做了類似的事情,主要是因為代碼不能作為庫使用(Ubuntu 只為它編譯命令行工具)。為了實現它,我autoconf使用我認為在大多數系統中合理的選項運行腳本,并將 C 代碼與自動構建的config.h頭文件一起復制到 Go 包目錄中。然后,我用make一次構建了原始 C 代碼,并觀察了 gcc 在編譯和鏈接它時會得到哪些選項,并將適當的選項復制到cgo 的 LDFLAGS 和 CFLAGS 選項中(您也可以檢查Makefile,但這更容易)。

幾個邊注:

  • 你有沒有考慮過在 Go 本身中做 readline 工作?如果ssh 終端包不能完全解決您的問題,它至少可以作為一個很好的種子。

  • 請記住 readline 雖然是一個庫,但它是 GPL。如果您鏈接或嵌入它,您也必須將自己的軟件許可為 GPL。如果您愿意,還有其他類似的庫,但許可證不太嚴格。


查看完整回答
反對 回復 2021-06-28
  • 2 回答
  • 0 關注
  • 244 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號