【发布时间】:2016-11-07 13:49:45
【问题描述】:
我正在尝试编译一个使用 gokiri 库的 GO 应用程序。 我安装了 docker 并在本地编译了 xgo go 的交叉编译器。 尝试执行以下命令时:
./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.
【问题讨论】:
-
看来您需要通过
--deps标志为xgo提供所有C 依赖项。构建容器需要知道从哪里获取它正在构建的 C 包的 deps。 -
@JimB 检查我编辑的问题,它没有帮助。
-
我会尝试在没有 xgo 的 linux 容器中构建它,既可以确切地看到什么不工作,也因为它可能更容易,并且可以让你更多地控制直接使用 docker 而不是用 xgo 解决这个问题.
-
@JimB 你能给我一些关于如何使用 docker 在 linux 容器中构建它的参考吗?我对此很陌生。非常感谢!
-
一旦你可以运行一个容器,在容器内构建包就像在一个完整的 Linux 主机上一样。 Get Started With Docker 可能是一个不错的起点。
标签: macos go docker cgo gokogiri