如何查看aarch64-none-elf交叉编译工具链的glibc版本?
查看aarch64-none-elf-gcc工具链的glibc版本
当前使用的ARM64编译器版本信息:
$ aarch64-none-elf-gcc --version aarch64-none-elf-gcc (GNU Toolchain for the Arm Architecture 11.2-2022.02 (arm-11.14)) 11.2.1 20220111 Copyright (C) 2021 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
可通过以下命令下载glibc源码:
git clone git://sourceware.org/git/glibc.git
查看工具链glibc版本的几种方法:
通过头文件宏定义查看
找到工具链的安装目录,进入aarch64-none-elf/include路径,打开features.h文件,查找__GLIBC__和__GLIBC_MINOR__宏定义,例如:#define __GLIBC__ 2 #define __GLIBC_MINOR__ 34上述内容表示glibc版本为2.34。
通过readelf查看库文件版本
如果工具链附带glibc库文件,找到libc.so或libc.a的路径,执行以下命令:aarch64-none-elf-readelf -V /path/to/libc.so输出结果中会包含glibc的版本信息。
编译测试程序查看
编写测试代码test.c:#include <stdio.h> #include <features.h> int main() { printf("GLIBC version: %d.%d\n", __GLIBC__, __GLIBC_MINOR__); return 0; }用目标编译器编译:
aarch64-none-elf-gcc -o test test.c- 若能在目标环境(如QEMU或开发板)运行,直接执行程序即可看到版本;
- 裸机环境无法运行时,可查看预处理输出确认宏定义:
aarch64-none-elf-gcc -E test.c | grep __GLIBC__
注意事项
aarch64-none-elf属于裸机目标工具链,部分版本默认不搭载glibc,而是使用newlib作为C库。若工具链使用的是newlib,需排查newlib的printf实现而非glibc。可通过查看工具链库目录下是否存在libnewlib.a来确认。
内容的提问来源于stack exchange,提问作者Chan Kim
相关产品推荐
相关产品推荐

