Как узнать версию 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 (как для пользовательского пространства, так и для пространства ядра)?

8

Решение

Для программ это появляется в .comment раздел исполняемых файлов ELF, если ваша система использует ELF.

$ cat main.c
int main () {}
$ gcc main.c
$ objdump -s -j .comment a.out

a.out: формат файла elf64-x86-64

Содержание раздела .комментарий:
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 версия 3.8.5 (...) (gcc версия 4.7.2 (Debian 4.7.2-5)) ...

Главное предостережение

.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: формат файла elf64-x86-64

objdump: раздел '.comment' упоминается в опции -j, но не найден ни в одном входе
файл

После установки libcurl3-dbg пакет, мы получаем изображение с разделенными разделами, следуя ссылке отладки GNU:

$ objdump -s -j .comment \
/usr/lib/debug/.build-id/8c/4ae0ad17a4e76bab47c487047490061bd49de3.debug

/usr/lib/debug/.build-id/8c/4ae0ad17a4e76bab47c487047490061bd49de3.debug:
формат файла elf64-x86-64

Содержание раздела .комментарий:
0000 4743433a 20284465 6269616e 20342e37 GCC: (Debian 4.7
0010 2e322d35 2920342e 372e3200 .2-5) 4.7.2.
13

Другие решения

Для построения рабочего пространства 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
1

По вопросам рекламы [email protected]