Я использую Linux Mint с ядром версии 3.8.0-29-generic. Поэтому я скачал и распаковал исходный код Linux Kernel 3.8.9 и поместил папку в основной каталог. Теперь, используя команду make menuconfig в терминале gnome, я получаю сообщение об ошибке make:

DALEK linux-3.8.9 # make menuconfig
  HOSTCC  scripts/basic/fixdep
Segmentation fault
make[1]: *** [scripts/basic/fixdep] Error 139
make: *** [scripts_basic] Error 2

Поэтому я сделал тест памяти перед загрузкой, и нет ошибок памяти. Так в чем проблема? FTR Я использую спутник Toshiba L500 с архитектурой x86_64. Кто-то предположил, что источник ядра не настроен для этой архитектуры ....И если это так, где я могу найти ядро Linux, которое работает для x86_64?

Причина, по которой я пытаюсь это сделать, заключается в подготовке к сборке исходного кода ядра для создания модуля ядра: это даже необходимо с уже установленным ядром ???

2 ответа2

0

Нет, исходный код ядра не зависит от архитектуры. Хотя некоторые не очень поддерживаемые древние архитектуры (например, 32-битные MIPS) могут нуждаться в локальных исправлениях, x86_64 не является одним из них.

Попробуйте увеличить многословие, чтобы увидеть, что делает эта марка. Возможно, ошибка происходит не в компиляторе, а в только что скомпилированном двоичном файле fixdep.

В обоих случаях существует серьезная проблема с исходным кодом ядра или с вашей системой.

(Вы могли бы еще попробовать полностью скачать / распаковать исходники нового ядра, если что-то сломалось, тогда все будет хорошо)

0

Очевидно, я подумал, что скрипт makefile использует заголовки в папке /usr/src/linux-headers-3.8.0-29-generic/, но также использует заголовки GCC в /usr /lib /gcc /x86_64 -linux-gnu / 4.7.3 / include / folder. Как оказалось, многие другие получили такую же ошибку (ошибка сегментации: Ошибка 139). И из сообщений об ошибках был исполняемый файл fixdep, который был целью make-файла в папке / scripts / basic /, исходный код которого - fixdep.c. Один сайт сказал что-то о листинге "CONFIG_MODULE", и я заметил, что он использует функцию memcmp. Я определил эту функцию, используя какой-то избитый встроенный код сборки, который я получил откуда-то и поместил в заголовок. Поэтому я переписал это, используя стандартный код c, и это полностью устранило ошибку сегментации!

Я предполагаю, что встроенный код ассемблера, возможно, пытался получить доступ к защищенной памяти, что может вызвать ошибку сегментации.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .