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

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

如何在不使用make的情況下使用cgo?

如何在不使用make的情況下使用cgo?

Go
呼喚遠方 2021-04-26 13:38:41
我使用自定義構建工具來編譯go項目,并且需要一種在項目中使用cgo的方法。問題在于cgo文檔僅告訴您如何將其與make一起使用。我真正需要知道的是哪些生成的文件可以使用哪些工具進行處理以及需要以什么順序進行處理。我試圖在go源目錄中讀取make.pkg,但我的最大努力失敗了。我的測試dll非常簡單,每次調用時都會返回1的單個函數,使用該函數的go代碼也同樣簡單。在cgo項目上成功運行make所產生的控制臺輸出將非常有幫助。
查看完整描述

2 回答

?
GCT1015

TA貢獻1827條經驗 獲得超4個贊

make在misc / cgo / life目錄中的32位Linux上運行的輸出:


# gomake _obj/life.a

CGOPKGPATH= cgo --  life.go 

touch _obj/_cgo_run

8g  -o _go_.8  _obj/life.cgo1.go _obj/_cgo_gotypes.go

8c -FVw -I ${GOROOT}/pkg/linux_386 -I . -o "_cgo_defun.8" _obj/_cgo_defun.c

gcc -m32 -I . -g -fPIC -O2 -o _cgo_main.o -c   _obj/_cgo_main.c

gcc -m32 -g -fPIC -O2 -o c-life.o -c   c-life.c

gcc -m32 -I . -g -fPIC -O2 -o life.cgo2.o -c   _obj/life.cgo2.c

gcc -m32 -I . -g -fPIC -O2 -o _cgo_export.o -c   _obj/_cgo_export.c

gcc -m32 -g -fPIC -O2 -o _cgo1_.o _cgo_main.o c-life.o life.cgo2.o _cgo_export.o  

cgo -dynimport _cgo1_.o >_obj/_cgo_import.c_ && mv -f _obj/_cgo_import.c_ _obj/_cgo_import.c

8c -FVw -I . -o "_cgo_import.8" _obj/_cgo_import.c

rm -f _obj/life.a

gopack grc _obj/life.a _go_.8  _cgo_defun.8 _cgo_import.8 c-life.o  life.cgo2.o _cgo_export.o

該行將cgo -- life.go創建以下文件:


_obj/_cgo_.o

_obj/life.cgo1.go

_obj/life.cgo2.c

_obj/_cgo_gotypes.go

_obj/_cgo_defun.c

_obj/_cgo_main.c

_obj/_cgo_flags

_obj/_cgo_export.c

_cgo_export.h


查看完整回答
反對 回復 2021-05-10
?
喵喔喔

TA貢獻1735條經驗 獲得超5個贊

我使用自定義構建工具來編譯go項目,并且需要一種在項目中使用cgo的方法。 ”

...而這種方法會導致問題。使用Makefile的標準方式非常簡單,容易,經過證明,已記錄等。

我意識到我沒有(直接)回答您的問題。相反,我的“答案”是:我強烈建議使用標準方式。不要通過選擇其他不受直接支持的選項來為自己制造問題。

就是說,我想有一種避免Makefile的方法,對不起,我從來沒有去過那里。我通常很懶/沒有時間,所以我用最簡單/最快的方式完成工作。您可能想嘗試相同的;-)


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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