2 回答

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

TA貢獻1735條經驗 獲得超5個贊
“我使用自定義構建工具來編譯go項目,并且需要一種在項目中使用cgo的方法。 ”
...而這種方法會導致問題。使用Makefile的標準方式非常簡單,容易,經過證明,已記錄等。
我意識到我沒有(直接)回答您的問題。相反,我的“答案”是:我強烈建議使用標準方式。不要通過選擇其他不受直接支持的選項來為自己制造問題。
就是說,我想有一種避免Makefile的方法,對不起,我從來沒有去過那里。我通常很懶/沒有時間,所以我用最簡單/最快的方式完成工作。您可能想嘗試相同的;-)
- 2 回答
- 0 關注
- 242 瀏覽
添加回答
舉報