问题标签 [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.
docker - Rust musl Docker 镜像找不到 Cargo
我试图让 Rust 在 Docker 中运行以将其用于 32 位 musl 构建。自从我更新它以使用新的 URL 来拉取 rustup 后,我在使用 bash 以交互方式运行容器时遇到了这个问题:
奇怪的是,我可以看到可执行文件
它通过以下方式安装:
我可以看到该文件,但似乎无法运行它,即使我切换到该目录:
这是我在运行时看到的ldd
:
这是我完整的 Dockerfile
并cargo
根据评论对二进制文件进行跟踪:
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/
我在源目录中运行了这个命令:
c - musl-gcc:对 __memcpy_chk 的未定义引用
我需要针对 musl-libc 编译一个 C 程序以使其在嵌入式设备上运行。但是,我无法编译该程序。源代码取决于我传递给链接器的几个库,如下所示:
/usr/local/musl/bin/musl-gcc app.c -o app -I../lib -lzlog -lfilter
这是我得到的输出:
与 gcc 相同的命令可以正常工作。这些功能不是在musl中实现的吗?
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 吗?
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 上进行本机编译,结果相同。
看起来安装程序缺少编译器,但我不知道如何安装和提供它。
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”
你能帮帮我吗?
go - golang 对 localhost 的处理
我有一个使用 musl libc 的 alpine linux 系统,因此没有/etc/nsswitch.conf
.
根据这个系统上的 tcpdump,net.LookupIP("localhost")
实际上是查询localhost.a.b.c
,其中a.b.c
取自domain a.b.c
in /etc/resolv.conf
。但是如果我添加一个/etc/nsswitch.conf
with hosts: files dns
,它会正确地localhost
从/etc/hosts
.
localhost
据我所知,在 DNS 中查找域时,没有任何 libc 实现会尝试添加域。那么(a)这样做是否有充分的理由或者是一个错误?(b) 有没有办法在不添加 nsswitch.conf 并且仍然只使用名称的情况下解决它localhost
?
编辑更多细节:
所以是的,存在对libc.so
. 我也在构建命令行中CGO_ENABLED=1
尝试过这个。CGO_ENABLED=0
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
那绝对是一个共享库
它确实有效,这太疯狂了,哈哈。我实际上可以这样做:
它会起作用。但是我怎么可能从终端调用共享库呢?
rust - 在适用于 Linux 的 macOS 上使用 cargo 和 rust 交叉编译和链接动态库 (cdylib)
我有一个 Rust 库,它为FFI
. 我假设我必须设置crate-type
为cdylib
- 因为我想从 Ruby 和 PHP 调用这些函数(fi via ffi
ruby gem)。但我无法将它从 OSX 交叉编译到 Linux。我尝试遵循一些使用的教程musl libc
-这是针对静态库的,但我没有找到其他任何东西。
所以链接器是这样定义的:
我试图编译它:
但是立即出现错误:
我的问题是:什么目标/链接器对可用于交叉编译cdylib
?为什么 musl 不支持这些板条箱类型?甚至有可能吗?
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 上运行?