Как узнать версию gcc, используемую для создания linux?
Я использую OpenWRT. это дистрибутив linux для встроенных систем
Я хочу знать версию gcc, используемую для компиляции linux
Я сделал некоторые исследования в интернете, но без результатов.
Я попытался выполнить эти команды для некоторых существующих двоичных файлов в linux OpenWRT (например, wget)
strings -a <default binary> | grep "GCC"
strings -a <default binary> | grep "gcc"
но я не получил никакого результата
даже
strings -a /lib/libgcc_s.so.1 | grep "gcc"
strings -a /lib/libuClibc-0.9.30.1.so | grep "gcc"
не дает никакого результата
есть ли способ знать использовать GCC для Linux (для обоих пространство пользователя и пространство ядра)?
2 ответов
для программ он отображается в .comment
раздел исполняемых файлов ELF, если ваша система использует ELF.
$ cat main.c int main() { } $ gcc main.c $ objdump -s -j .comment a.out a.out: file format elf64-x86-64 Contents of section .comment: 0000 00474343 3a202844 65626961 6e20342e .GCC: (Debian 4. 0010 372e322d 35292034 2e372e32 00474343 7.2-5) 4.7.2.GCC 0020 3a202844 65626961 6e20342e 342e372d : (Debian 4.4.7- 0030 33292034 2e342e37 00 3) 4.4.7.
компилятор используется для компиляции ядра из строки /proc/version
, например:
$ cat /proc/version Linux version 3.8.5 (...) (gcc version 4.7.2 (Debian 4.7.2-5) ) ...
главный нюанс
The .comment
раздел является необязательным. Многие дистрибутивы будут лишать его исполняемого файла, когда исполняемый файл будет упакован в пакет. Раздел будет помещен в отдельную отладку пакет.
например, в моей системе:
$ objdump -s -j .comment /usr/lib/x86_64-linux-gnu/libcurl.so.4.2.0 /usr/lib/x86_64-linux-gnu/libcurl.so.4.2.0: file format elf64-x86-64 objdump: section '.comment' mentioned in a -j option, but not found in any input file
после установки libcurl3-dbg
пакет, мы получаем изображение с разделенными разделами, следуя ссылке отладки GNU:
$ objdump -s -j .comment \ /usr/lib/debug/.build-id/8c/4ae0ad17a4e76bab47c487047490061bd49de3.debug /usr/lib/debug/.build-id/8c/4ae0ad17a4e76bab47c487047490061bd49de3.debug: file format elf64-x86-64 Contents of section .comment: 0000 4743433a 20284465 6269616e 20342e37 GCC: (Debian 4.7 0010 2e322d35 2920342e 372e3200 .2-5) 4.7.2.
для построения рабочего пространства OpenWRT используется ваш основной gcc:
gcc --version
для кросс-компиляции все необходимые инструменты находятся под вами openwrt build dir.
gcc, используемый во время компиляции, можно найти в staging directory
OpenWRT. Перейдите в домашний каталог openwrt и найдите toolchain
каталог под промежуточным реж. Здесь вы найдете bin
каталог, где расположены все инструменты кросс-компиляции.
Например,ar71xx
:
$ ./staging_dir/toolchain-mips_r2_gcc-4.6-linaro_uClibc-0.9.33.2/bin/mips-openwrt-linux-gcc --version
mips-openwrt-linux-gcc (OpenWrt/Linaro GCC 4.6-2013.05 r57678) 4.6.4