Страница 1 из 1

Якім GCC скампілявана ядро?

Добавлено: 07 окт 2006, 21:03
Victor Gr.
Кампіляцыю ядра заўсёды выконваў так:

Пампаваў з kernel.org зыходнікі,
распакоўваў, клаў у каталог .config, потым make bzImage modules modules_install install і ўсё.

Але зараз паўстала пытанне скампіляваць модуль ядра асобна, і нешта не атрымоўваецца, здаецца, з-за розных кампілятараў.

На кампутары (Debian Testing) усталяваны наступныя версіі gcc:
gcc gcc version 4.1.2 20060901 (prerelease) (Debian 4.1.1-13)
gcc-3.3 gcc version 3.3.6 (Debian 1:3.3.6-10)
gcc-4.0 gcc version 4.0.4 20060507 (prerelease) (Debian 4.0.3-3)
gcc-4.1 gcc version 4.1.2 20060901 (prerelease) (Debian 4.1.1-13)

Значыць, gcc = gcc-4.1.

Але! Пры кампіляцыі vmplayer... Ён мне паказаў такое паведамленне:

Your kernel was built with "gcc" version "4.0.3", while you are trying to use
"/usr/bin/gcc" version "4.1.2"

Тое ж самае, калі спрабую скампіляваць модуль kqemu:

Код: Выделить всё

# modprobe kqemu
FATAL: Error inserting kqemu (/lib/modules/2.6.18-VORTEX/misc/kqemu.ko): Invalid module format
Гм. Ну вось і пытанне: што ж рабіць?
Як хацябы вызначыць, якім gcc было скампілявана ядро?

Прымусовае ўсталяванне ./configure --cc=gcc-4.0 --host-cc=gcc-4.0 нічога не дае.

Добавлено: 07 окт 2006, 21:33
Llama
Victor Gr.,
1) /proc/version
2) Искать, читатьи применять статью Федорчука про использование make_kpkg
3) А CC и CXX я задавал в Makefile верхенего уровня....

Добавлено: 07 окт 2006, 22:11
Victor Gr.
Llama, спасибо!

Да, действительно, gcc-4.0.3... Интересно, а почему им, а не 4.1, на который ссылается "gcc"?

В /usr/src/linux/Makefile

Код: Выделить всё

HOSTCC       = gcc
HOSTCXX      = g++

Добавлено: 08 окт 2006, 23:38
red f0x
... или uname -a
или UTS_RELEASE в version.h (каюсь, перебор :) )
и ещё, риторический вопрос автору, а что заставляет держать такую обширную коллекцию компиляторов? Про запас, на чёрный день? :)
CC и CXX я задавал в Makefile верхенего уровня....
Симметрично. Так и только так.

Добавлено: 09 окт 2006, 08:59
Llama
red f0x, uname -a про компилятор ничего не говорит ;)

Добавлено: 09 окт 2006, 09:45
exe
Эта информация должна быть зашита где-то в самом kernel.
Посмотри в hex.

Добавлено: 09 окт 2006, 10:49
Llama
exe, зачем в hex ? в /proc/version же все написано ;)

Добавлено: 09 окт 2006, 13:50
Bug$
Llama писал(а):exe, зачем в hex ? в /proc/version же все написано ;)
пути линуксоидов неисповедимы :)

Добавлено: 09 окт 2006, 15:05
exe
/proc/version врет если другой kernel загружен.
А вот hex editor всегда правду показывает :-)

Где же тут неисповедимость?

Добавлено: 09 окт 2006, 15:25
ZvK
если учесть, что загружабельное ядро gzip'лено обычно, то hex editor есть мазохистов друг.

Добавлено: 09 окт 2006, 15:30
Llama
.oO(bzcat vmlinuz |strings ) ;)

Добавлено: 09 окт 2006, 21:04
ZvK
сам-то пробывал? ;)

PS:
1) bzImage -- это big zImage, а не Image, зажатый bzip'ом.
2) там еще код в начале.

Добавлено: 09 окт 2006, 22:40
Llama
ZvK, не-а, не пробывал, потому и оформлено как юмор ;)