首页 > 解决方案 > 将 Go 程序静态链接到 /usr/lib/libSystem.B.dylib

问题描述

chroot我试图让我的 Go 程序在监狱中作为单个独立二进制文件运行。当我在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 程序?我似乎正在遵循我在其他地方看到的所有静态链接说明,所以我不明白为什么仍然存在动态链接文件。

标签: gochroot

解决方案


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


推荐阅读