提问人:PrecisionPete 提问时间:9/29/2023 最后编辑:PrecisionPete 更新时间:9/29/2023 访问量:38
是否可以将 gcc 二进制文件与 musl-gcc 重新链接?
Is it possible to relink gcc binaries with musl-gcc?
问:
我正在构建一个使用第三方 C 库的 Linux Go 21.1.1 应用程序。它适用于我的开发系统 (22.04),但在其他一些有 glibc 问题的 dists 上失败了。似乎一个合理的选择是将所有内容静态链接到 musl-gcc。但我认为第三方库仍在寻找 glibc,它正在引起冲突。
是否可以强制链接器重新链接所有内容?我真的不知道如何解决这个问题。它似乎同时使用两者......
env CC=/usr/bin/musl-gcc \
CGO_FLAGS="-I/usr/include/X86_64-linux-musl" \
go build -a \
-o $DIST/$PROG \
-ldflags "-v -s -X 'main.Version=$VER' -linkmode external -extldflags '-static'"
产生这个...systray 是第三方库。
# github.com/getlantern/systray
In file included from /usr/include/x86_64-linux-musl/errno.h:10,
from cgo-gcc-prolog:30:
/usr/include/x86_64-linux-gnu/bits/errno.h:26:11: fatal error: linux/errno.h: No such file or directory
26 | # include <linux/errno.h>
| ^~~~~~~~~~~~~~~
compilation terminated.
如果我只是用 gcc 编译它,它在某些 dists 上工作正常,但在其他 dist 上失败。例如,Debian 11 给出:
/usr/local/bin/myagent
/usr/local/bin/myagent: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.34' not found (required by /usr/local/bin/myagent)
/usr/local/bin/myagent: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_2.32' not found (required by /usr/local/bin/myagent)
111
欢迎任何想法!
答: 暂无答案
评论