我正在尝试使用 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 中的其他文件?
感谢@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/...>