问题标签 [musl]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2924 浏览

docker - Rust musl Docker 镜像找不到 Cargo

我试图让 Rust 在 Docker 中运行以将其用于 32 位 musl 构建。自从我更新它以使用新的 URL 来拉取 rustup 后,我在使用 bash 以交互方式运行容器时遇到了这个问题:

奇怪的是,我可以看到可执行文件

它通过以下方式安装:

我可以看到该文件,但似乎无法运行它,即使我切换到该目录:

这是我在运行时看到的ldd

这是我完整的 Dockerfile

cargo根据评论对二进制文件进行跟踪:

0 投票
2 回答
742 浏览

c - 如何规避 GCC 的“尝试使用中毒的 malloc/calloc”错误?

我正在使用交叉 musl 编译器(相同版本)构建本机 musl 编译器(GCC 8.3.0),但出现此错误:

关于如何规避这个问题的任何想法?

细节:

目标/主机三重:x86_64-linux-musl

音乐版:1.1.21

我在这里应用了 musl 补丁:http: //port70.net/~nsz/musl/gcc-8.2.0/

我在源目录中运行了这个命令:

0 投票
2 回答
4106 浏览

c - musl-gcc:对 __memcpy_chk 的未定义引用

我需要针对 musl-libc 编译一个 C 程序以使其在嵌入式设备上运行。但是,我无法编译该程序。源代码取决于我传递给链接器的几个库,如下所示:

/usr/local/musl/bin/musl-gcc app.c -o app -I../lib -lzlog -lfilter

这是我得到的输出:

与 gcc 相同的命令可以正常工作。这些功能不是在musl中实现的吗?

0 投票
1 回答
396 浏览

docker - 在 Alpine Linux Docker 容器中构建 GNATCOLL

我似乎无法让 GNATCOLL 在基于 Alpine Linux 的 Docker 容器中编译。

到目前为止,我的容器是:

这很好用,并为我提供了一个带有基于 GNAT GPR 的 Ada 开发环境的容器。当我尝试在此容器中安装 GNATCOLL 时出现问题。

运行docker run -i -t <built_image>以下发生:

根据https://github.com/AdaCore/gnatcoll-core/issues/30中的讨论,我检查了我的 gprbuild 版本:

因此,用于 musl 的 gprbuild 似乎已经过时了,导致无法构建 GNATCOLL。有没有办法为 musl-c 获得更新版本的 gprbuild?如果没有,还有其他方法可以安装 GNATCOLL 吗?

0 投票
1 回答
741 浏览

rust - 如何使用 Raspian/Debian 在 ARMv7 上为 musl 创建静态链接的 Rust 程序?

我正在尝试使用 Cargo 中的 armv7-unknown-linux-musleabihf 目标在 ARMv7(Raspian/Debian)上创建 Rust 程序的静态链接版本。依赖项 backtrace-sys v0.1.28 的构建失败

我已经尝试过从 Ubuntu Linux x86_64 进行交叉编译,但也尝试在 Raspian 上进行本机编译,结果相同。

看起来安装程序缺少编译器,但我不知道如何安装和提供它。

0 投票
1 回答
1094 浏览

git - MUSL C 库不工作 yocto 项目

我正在使用yocto 项目为我的sama5d27 som1 board构建 linux 内核。我正在尝试减小已发布内核的大小,因此我将 sysVinit 替换为busybox init,现在我正在尝试将 gClibrary 替换为musl C library

在我的 Poky 目录下,我使用以下方法克隆了 meta-musl 层:

git clone git://github.com/kraj/meta-musl.git

我将图层添加到bblayers.conf并添加TCLIBC = "musl"到 local.conf 我初始化了环境然后运行bitbake core-image-minimal

我得到了这些错误:

错误: systemd-1_237-r0 do_compile:函数失败:do_compile(日志文件位于 /home/gaston/linux4sam/poky/build-microchip/tmp/work/cortexa5t2hf-neon-poky-linux-musleabi/systemd/1_237- r0/temp/log.do_compile.6846)

错误:故障日志文件存储在:/home/gaston/linux4sam/poky/build-microchip/tmp/work/cortexa5t2hf-neon-poky-linux-musleabi/systemd/1_237-r0/temp/log.do_compile.6846

错误:任务(/home/gaston/linux4sam/poky/meta/recipes-core/systemd/systemd_237.bb:do_compile)失败,退出代码为“1”

你能帮帮我吗?

0 投票
0 回答
392 浏览

go - golang 对 localhost 的处理

我有一个使用 musl libc 的 alpine linux 系统,因此没有/etc/nsswitch.conf.

根据这个系统上的 tcpdump,net.LookupIP("localhost")实际上是查询localhost.a.b.c,其中a.b.c取自domain a.b.cin /etc/resolv.conf。但是如果我添加一个/etc/nsswitch.confwith hosts: files dns,它会正确地localhost/etc/hosts.

localhost据我所知,在 DNS 中查找域时,没有任何 libc 实现会尝试添加域。那么(a)这样做是否有充分的理由或者是一个错误?(b) 有没有办法在不添加 nsswitch.conf 并且仍然只使用名称的情况下解决它localhost

编辑更多细节:

所以是的,存在对libc.so. 我也在构建命令行中CGO_ENABLED=1尝试过这个。CGO_ENABLED=0

0 投票
1 回答
700 浏览

linux - 我如何能够从终端将共享库作为可执行文件运行?

来自 musl libc 常见问题解答

问:ldd 在哪里?

musl 的动态链接器带有内置的 ldd 功能。只需创建一个从 ld-musl-$ARCH.so 到 /bin/ldd 的符号链接。如果动态链接器以“ldd”启动,它将检测到并打印适当的 DSO 信息。

检查ld-musl-$ARCH.so我发现它是 musl 的符号链接/usr/local/musl/lib/libc.so

那绝对是一个共享库

它确实有效,这太疯狂了,哈哈。我实际上可以这样做:

它会起作用。但是我怎么可能从终端调用共享库呢?

0 投票
1 回答
2035 浏览

rust - 在适用于 Linux 的 macOS 上使用 cargo 和 rust 交叉编译和链接动态库 (cdylib)

我有一个 Rust 库,它为FFI. 我假设我必须设置crate-typecdylib- 因为我想从 Ruby 和 PHP 调用这些函数(fi via ffiruby​​ gem)。但我无法将它从 OSX 交叉编译到 Linux。我尝试遵循一些使用的教程musl libc-这是针对静态库的,但我没有找到其他任何东西。

所以链接器是这样定义的:

我试图编译它:

但是立即出现错误:

我的问题是:什么目标/链接器对可用于交叉编译cdylib?为什么 musl 不支持这些板条箱类型?甚至有可能吗?

0 投票
1 回答
910 浏览

linux - Rust 交叉编译 -lpcap 从 macos 到 linux

我正在尝试使用cargo build --target=x86_64-unknown-linux-musl.

  • 我在 mac 上安装了用于 Linux + musl 交叉编译的二进制文件,brew install FiloSottile/musl-cross/musl-cross因为理想情况下我想要一个独立的二进制文件。
  • 我还使用安装了目标rustup target add x86_64-unknown-linux-gnu
  • 我有以下内容.cargo/config

但是,我遇到了 2 个库的问题 - sqlite3 和 pcap:

我能够通过添加features = ["bundled"]到我的Cargo.toml文件来解决 sqlite3 链接器问题(类似于此处描述的内容 - https://users.rust-lang.org/t/linker-cannot-find-lsqlite3/23230/18),因为可能是从源代码构建的(这很棒)但是当我尝试对 pcap 做同样的事情时,它给出了以下错误:

在某处阅读后,我还尝试(希望不高)在 mac 上使用提供已安装 libpcap 的路径,RUSTPATH='-L/...' cargo build ...但这当然会导致未定义的符号错误。

有什么想法可以解决这个问题并将我的 Rust 项目交叉编译成 macos 上的静态链接二进制文件以在 linux 上运行?