登录
首页 >  Golang >  Go问答

将Go程序静态链接到/usr/lib/libSystem.B.dylib

来源:stackoverflow

时间:2024-03-17 19:36:23 380浏览 收藏

macOS 上的 Go 程序无法静态链接到 /usr/lib/libSystem.B.dylib 及其依赖项,因为 Go 1.12 及更高版本不支持此功能。此限制是由 macOS 系统本身的限制造成的,无法通过修改构建脚本或其他设置来解决。

问题内容

我正在尝试让我的 go 程序作为 chroot 监狱中的单个独立二进制文件运行。当我在 chroot 监狱中运行该程序时,它立即终止并显示以下错误消息:killed:9。我正在使用这个脚本构建:

#!/bin/sh -e
export cgo_enabled=0
go build -ldflags=-s -o ./dist/contained ./source/main.go

使用 otool -l ./dist/contained 来查看是否有任何库链接到它证实了我的怀疑:

./dist/contained:
        /usr/lib/libSystem.B.dylib (compatibility version 0.0.0, current version 0.0.0)

我的问题是:如何获取 /usr/lib/libsystem.b.dylib 及其所有依赖项来静态链接到 go 程序? 我似乎遵循了所有说明我在其他地方看到过静态链接,所以我不明白为什么仍然存在动态链接文件。


解决方案


从 Go 1.12 开始,您不能在 macOS 上 - 有关详细信息,请参阅 https://github.com/golang/go/issues/17490

以上就是《将Go程序静态链接到/usr/lib/libSystem.B.dylib》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>