Sam*_*uel 7 c standard-library include-path musl
我正在尝试使用 x11 编译程序并使用 musl 作为 c 库。我的系统上仍然有 glibc。Musl 位于/usr/local/musl/includeThe glib headers are still in/usr/include
当我与
musl-gcc test.c
Run Code Online (Sandbox Code Playgroud)
我明白了fatal error: X11/Xlib.h: no such file or directory
如果我尝试
musl-gcc test.c -I/usr/include
Run Code Online (Sandbox Code Playgroud)
它包含 glib 标头而不是 musl 标头,并引发一堆错误。
如果我尝试
musl-gcc test.c -I/usr/local/musl/include -I/usr/include
Run Code Online (Sandbox Code Playgroud)
它仍然包含 /usr/include 中 glib 的标头
如何使 musl-gcc 使用 musl 标头,但仍包含 /usr/include 中的其他文件?
小智 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/...>
Run Code Online (Sandbox Code Playgroud)
请注意,这很可能还不够,因为包含的标头也可能使用#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/...>
Run Code Online (Sandbox Code Playgroud)