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 关注
- 211 浏览
添加回答
举报