我正在尝试通过SBoTools在Slackware 14.2中安装Docker,但是我收到了runc安装的错误消息。
对`seccomp_rule_add_exact_array'的未定义引用 collect2:错误:ld返回1退出状态
make:*** [all]错误2
Makefile:30:目标'all'失败的食谱
失败:runc:runc.SlackBuild返回非零
我尝试从源代码构建runc,但遇到了同样的错误。我不是go-lang的专家,也不知道问题是否存在。
谢谢,
更多详情:
在安装时,当它发出命令时会发生问题:
go build -i -ldflags "-X main.gitCommit=54296cf40ad8143b62dbcaa1d90e520a2136ddfe -X main.version=1.0.0-rc2" -tags "seccomp" -o runc .
编辑#2 - 问题解决了。
好吧,问题出在slackbuilds的runc包的Makefile中。 有两行将使用命令“go build”,并且两者都有一个名为“-ldflags”的标志......要解决问题,只需使用“-gccgoflags”更新此标志即可。 Obs:如果你正在尝试安装Docker,那么容器也会遇到这个问题。
希望这可以帮助别人,我会在Slackbuilds中报告这个包的主要工具:)
答案 0 :(得分:0)
不,这与Go完全无关。在编译(或者更确切地说是链接)C代码时发生了这个错误。乍一看,问题是您的libseccomp
已过期。缺少的符号在该库的2.0和2.1之间添加。
答案 1 :(得分:0)
构建时没有正确设置PATH变量。从/ usr / bin获取go可执行文件;该可执行文件对应于gccgo,而不是google-golang包中的那个,这是要使用的那个。
答案 2 :(得分:0)
问题不在于-ldflags
,问题是您在安装google-go-lang
后没有设置PATH。
为此,您可以从安装了go
的根提示符退出并重新登录,或者只是来源/etc/profile.d/go.sh
:
source /etc/profile.d/go.sh
然后继续安装runc
以及您刚刚提供go.sh
的提示中的其他软件包。
见:slackware:howtos:docker