如何在任何发行版上查找库和头文件的所有可能位置?

如何在任何发行版上查找库和头文件的所有可能位置?

我发现不同发行版上库和头文件的位置有很大不同。例如,在 Fedora 上您有,/usr/lib64/libbfd.a而在 Ubuntu 上您有/usr/lib/x86_64-linux-gnu/libbfd.a。或者在 Fedora 上有,/usr/lib/gcc/x86_64-redhat-linux/10/include/stdatomic.h而在 Ubuntu 上有/usr/lib/gcc/x86_64-linux-gnu/10/include/stdatomic.h

有没有办法知道您必须查看哪些位置,而无需维护每个发行版的位置列表?

答案1

你可以询问 C 预处理器(至少对于 GCC 前端驱动的任何东西):

$ cpp -v /dev/null -o /dev/null
...
#include <...> search starts here:
 /usr/lib/gcc/x86_64-linux-gnu/10/include
 /usr/local/include
 /usr/include/x86_64-linux-gnu
 /usr/include
End of search list.
COMPILER_PATH=/usr/lib/gcc/x86_64-linux-gnu/10/:/usr/lib/gcc/x86_64-linux-gnu/10/:/usr/lib/gcc/x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/10/:/usr/lib/gcc/x86_64-linux-gnu/
LIBRARY_PATH=/usr/lib/gcc/x86_64-linux-gnu/10/:/usr/lib/gcc/x86_64-linux-gnu/10/../../../x86_64-linux-gnu/:/usr/lib/gcc/x86_64-linux-gnu/10/../../../../lib/:/lib/x86_64-linux-gnu/:/lib/../lib/:/usr/lib/x86_64-linux-gnu/:/usr/lib/../lib/:/usr/lib/gcc/x86_64-linux-gnu/10/../../../:/lib/:/usr/lib/
COLLECT_GCC_OPTIONS='-E' '-v' '-o' '/dev/null' '-mtune=generic' '-march=x86-64'

这给出了头搜索路径(“#include <...>搜索从这里开始:”和“搜索列表结束”之间的条目)和库搜索路径(给定的值LIBRARY_PATH)。

有些库提供pkg-config文件,您可以找到带有pkg-config --cflagspkg-config --libs(带有库名称)的文件。

相关内容