go - 将 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 程序?我似乎正在遵循我在其他地方看到的所有静态链接说明,所以我不明白为什么仍然存在动态链接文件。
解决方案
从 Go 1.12 开始,您不能在 macOS 上使用 - 有关详细信息,请参阅https://github.com/golang/go/issues/17490。
推荐阅读
- c++ - C++ 字符串数组在 20 字节后拆分
- rust - edition = "2018" 使用或不使用`extern crate
` - docker - 使用 Haskell-stack 构建 docker 容器时出现问题:如何确保 Haskell-stack 继续构建到最后?
- java - HTML 忽略 ajax 调用
- javascript - 如何替换特定页面?[HTML 多语言网站]
- android - Android 秘密存储 API 密钥
- python - 如何从给定列表中选择所有可能的子列表对,其联合将成为列表?
- windows - 如何在mingw下从“resource.rc”生成“resource.h”
- php - 带有 Trait 的 Laravel 控制台命令
- laravel-5 - 授权用户 Laravel 的调度任务