我的系统上安装了两个gcc编译器,一个是gcc 4.1.2(默认),另一个是gcc 4.4.4.我如何检查所使用的libc版本gcc 4.4.4,因为它/lib/libc.so.6显示了所使用的glibc gcc 4.1.2,因为它是默认的编译器.
我的 Linux 桌面上有一些交叉编译器。有些使用 glibc,有些使用 uclibc(将来也可能有其他libc)。
目前,我可以进入他们的 sysroot 目录并搜索libc.so并尝试找到它指向的文件名(例如libc.so-> libuClibc-1.0.12.so),然后我获取他们的名称。但如果命名发生变化或者交叉编译器本身发生变化,这种情况不会持续太久。
是否有更好/可靠的编程方法来检测libc目标交叉编译器所使用的名称和版本?或者是否有任何内省工具可用于获取有关目标 ceros 的详细信息
注意:这里有一些类似的问题,通常指向#include <features.h>文件或类似问题。如果生成的代码也可以在主机上运行,那么效果很好。但不适合交叉编译环境。
那么有人能够更可靠地检测到吗?
编辑:如果有人来这里专门寻找检测 musl libc,我已经回答了与此问题相关的另一个问题。