使用 /usr/include 中的其他标头链接到 musl

问题描述 投票:0回答:1

我正在尝试使用 x11 编译程序并使用 musl 作为 c 库。我的系统上仍然有 glibc。 Musl 位于

/usr/local/musl/include
Glib 标头仍在
/usr/include

当我与

一起思考时
musl-gcc test.c

我明白了

fatal error: X11/Xlib.h: no such file or directory

如果我尝试

musl-gcc test.c -I/usr/include

它包含 glib 标头而不是 musl 标头,并引发一堆错误。

如果我尝试

musl-gcc test.c -I/usr/local/musl/include -I/usr/include

它仍然包含 /usr/include 中 glib 的标头

如何让 musl-gcc 使用 musl 标头,但仍包含 /usr/include 中的其他文件?

c include-path standard-library musl
1个回答
0
投票

感谢@technosaurus 的评论。您应该添加符号链接。

例如,我需要在使用

linux/userfaultfd.h
编译时使用 linux 头文件
musl-gcc
。 只需创建符号链接以包含文件夹(在我的例子中
/usr/include/linux
)并将它们放入 musl 的默认标头路径中:

pushd /usr/local/musl/include
sudo cp -rs /usr/include/linux/ linux/ # now can #include<linux/...>

请注意,这很可能是不够的,因为包含的标头也可能使用

#include <another-path/...>
。您会在编译器错误中注意到它。对所有这些
another-path
进行符号链接,就完成了。

就我而言,我还需要符号链接这些路径:

sudo cp -rs /usr/include/asm/ asm/ # now can #include<asm/...>
sudo cp -rs /usr/include/asm-generic/ asm-generic/ # now can #include<asm-generic/...>
© www.soinside.com 2019 - 2024. All rights reserved.