Go - 使用xgo库与CGO交叉编译

时间:2016-07-05 16:22:53

标签: macos go docker cgo gokogiri

我正在尝试编译使用gokiri库的GO应用程序。 我安装了docker并在本地编译了xgo交叉编译器。 尝试执行以下命令时:

./xgo mydomain.com/test/test-app

我收到以下错误:

In file included from /usr/include/libxml2/libxml/parser.h:810:0,
             from /usr/include/libxml2/libxml/globals.h:18,
             from /usr/include/libxml2/libxml/threads.h:35,
             from /usr/include/libxml2/libxml/xmlmemory.h:218,
             from /usr/include/libxml2/libxml/tree.h:1307,
             from ../../github.com/moovweb/gokogiri/help/help.go:6:
/usr/include/libxml2/libxml/encoding.h:28:19: fatal error: iconv.h: No such file or directory

我安装了xcode-tools,帮我编译了我的机器(mac ox El Capitan)。但是,我无法将其编译到其他环境中。

任何帮助将不胜感激。感谢。

更新1:

我尝试添加依赖项,但结果相同:

./xgo --deps /usr/local/Cellar/libiconv/1.14/ mydomain.com/test/test-app

xgo的日志中甚至提到这个库已经被缓存了:

Dependency already cached: /Users/macuser/.xgo-cache/1.14.

1 个答案:

答案 0 :(得分:0)

来自文档:

  

假设依赖的C / C ++库是configure / make   基于,已经为交叉编译做好了准备并且可以作为   tarball下载(.tar,.tar.gz或.tar.bz2)。进一步的计划包括   如果需要,将此扩展到基于cmake的项目(请打开一个   问题,如果它对你很重要)。

     

可以通过--deps参数添加此类依赖项。他们会   在开始交叉编译和包之前检索   缓存以节省后续呼叫的带宽。

所以在这个例子中,它将是:

./xgo --deps https://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.15.tar.gz mydomain.com/test/test-app