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

我使用自定义构建工具来编译go项目,并且需要一种在项目中使用cgo的方法。

问题在于cgo文档仅告诉您如何将其与make一起使用。

我真正需要知道的是哪些生成的文件可以使用哪些工具进行处理以及需要以什么顺序进行处理。我试图在go源目录中读取make.pkg,但我的最大努力失败了。

我的测试dll非常简单,每次调用时都会返回1的单个函数,使用该函数的go代码也同样简单。

在cgo项目上成功运行make所产生的控制台输出将非常有帮助。


呼唤远方
浏览 212回答 2
2回答

GCT1015

make在misc / cgo / life目录中的32位Linux上运行的输出:# gomake _obj/life.aCGOPKGPATH= cgo --  life.go touch _obj/_cgo_run8g  -o _go_.8  _obj/life.cgo1.go _obj/_cgo_gotypes.go8c -FVw -I ${GOROOT}/pkg/linux_386 -I . -o "_cgo_defun.8" _obj/_cgo_defun.cgcc -m32 -I . -g -fPIC -O2 -o _cgo_main.o -c   _obj/_cgo_main.cgcc -m32 -g -fPIC -O2 -o c-life.o -c   c-life.cgcc -m32 -I . -g -fPIC -O2 -o life.cgo2.o -c   _obj/life.cgo2.cgcc -m32 -I . -g -fPIC -O2 -o _cgo_export.o -c   _obj/_cgo_export.cgcc -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.c8c -FVw -I . -o "_cgo_import.8" _obj/_cgo_import.crm -f _obj/life.agopack 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

喵喔喔

“我使用自定义构建工具来编译go项目,并且需要一种在项目中使用cgo的方法。 ”...而这种方法会导致问题。使用Makefile的标准方式非常简单,容易,经过证明,已记录等。我意识到我没有(直接)回答您的问题。相反,我的“答案”是:我强烈建议使用标准方式。不要通过选择其他不受直接支持的选项来为自己制造问题。就是说,我想有一种避免Makefile的方法,对不起,我从来没有去过那里。我通常很懒/没有时间,所以我用最简单/最快的方式完成工作。您可能想尝试相同的;-)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go