LINUX.ORG.RU

компилю ядрышко собираю ядро make[2]: *** [arch/x86/kernel/ptrace.o] error 1, OS - ArchLinux

 , ,


0

1

[root@localhost linux-2.6.32.8]# make CHK include/linux/version.h CHK include/linux/utsrelease.h SYMLINK include/asm -> include/asm-x86 CALL scripts/checksyscalls.sh CHK include/linux/compile.h CC arch/x86/kernel/ptrace.o In file included from /root/kernelbuild/linux-2.6.32.8/arch/x86/include/asm/current.h:5:0, from /root/kernelbuild/linux-2.6.32.8/arch/x86/include/asm/processor.h:15, from /root/kernelbuild/linux-2.6.32.8/arch/x86/include/asm/thread_info.h:22, from include/linux/thread_info.h:56, from include/linux/preempt.h:9, from include/linux/spinlock.h:50, from include/linux/seqlock.h:29, from include/linux/time.h:8, from include/linux/timex.h:56, from include/linux/sched.h:56, from arch/x86/kernel/ptrace.c:11: /root/kernelbuild/linux-2.6.32.8/arch/x86/include/asm/irq_regs.h: В функции «set_irq_regs»: /root/kernelbuild/linux-2.6.32.8/arch/x86/include/asm/percpu.h:79:7: предупреждение: variable «tmp__» set but not used [-Wunused-but-set-variable] T__ tmp__; \ ^ /root/kernelbuild/linux-2.6.32.8/arch/x86/include/asm/percpu.h:149:32: замечание: in expansion of macro «percpu_to_op» #define percpu_write(var, val) percpu_to_op(«mov», per_cpu__##var, val) ^ /root/kernelbuild/linux-2.6.32.8/arch/x86/include/asm/irq_regs.h:26:2: замечание: in expansion of macro «percpu_write» percpu_write(irq_regs, new_regs); ^ In file included from /root/kernelbuild/linux-2.6.32.8/arch/x86/include/asm/hardirq.h:5:0, from include/linux/hardirq.h:10, from include/linux/interrupt.h:12, from include/linux/kernel_stat.h:8, from /root/kernelbuild/linux-2.6.32.8/arch/x86/include/asm/i387.h:14, from arch/x86/kernel/ptrace.c:30: include/linux/irq.h: В функции «alloc_desc_masks»: include/linux/irq.h:439:8: предупреждение: variable «gfp» set but not used [-Wunused-but-set-variable] gfp_t gfp = GFP_ATOMIC; ^ arch/x86/kernel/ptrace.c: На верхнем уровне: arch/x86/kernel/ptrace.c:1472:17: ошибка: несовместимые типы для «syscall_trace_enter» asmregparm long syscall_trace_enter(struct pt_regs *regs) ^ In file included from /root/kernelbuild/linux-2.6.32.8/arch/x86/include/asm/vm86.h:130:0, from /root/kernelbuild/linux-2.6.32.8/arch/x86/include/asm/processor.h:10, from /root/kernelbuild/linux-2.6.32.8/arch/x86/include/asm/thread_info.h:22, from include/linux/thread_info.h:56, from include/linux/preempt.h:9, from include/linux/spinlock.h:50, from include/linux/seqlock.h:29, from include/linux/time.h:8, from include/linux/timex.h:56, from include/linux/sched.h:56, from arch/x86/kernel/ptrace.c:11: /root/kernelbuild/linux-2.6.32.8/arch/x86/include/asm/ptrace.h:145:13: замечание: здесь была предыдущая декларация «syscall_trace_enter» extern long syscall_trace_enter(struct pt_regs *); ^ arch/x86/kernel/ptrace.c:1517:17: ошибка: несовместимые типы для «syscall_trace_leave» asmregparm void syscall_trace_leave(struct pt_regs *regs) ^ In file included from /root/kernelbuild/linux-2.6.32.8/arch/x86/include/asm/vm86.h:130:0, from /root/kernelbuild/linux-2.6.32.8/arch/x86/include/asm/processor.h:10, from /root/kernelbuild/linux-2.6.32.8/arch/x86/include/asm/thread_info.h:22, from include/linux/thread_info.h:56, from include/linux/preempt.h:9, from include/linux/spinlock.h:50, from include/linux/seqlock.h:29, from include/linux/time.h:8, from include/linux/timex.h:56, from include/linux/sched.h:56, from arch/x86/kernel/ptrace.c:11: /root/kernelbuild/linux-2.6.32.8/arch/x86/include/asm/ptrace.h:146:13: замечание: здесь была предыдущая декларация «syscall_trace_leave» extern void syscall_trace_leave(struct pt_regs *); ^ scripts/Makefile.build:229: ошибка выполнения рецепта для цели «arch/x86/kernel/ptrace.o» make[2]: *** [arch/x86/kernel/ptrace.o] Ошибка 1 scripts/Makefile.build:365: ошибка выполнения рецепта для цели «arch/x86/kernel» make[1]: *** [arch/x86/kernel] Ошибка 2 Makefile:878: ошибка выполнения рецепта для цели «arch/x86» make: *** [arch/x86] Ошибка 2

как решить проблему, знаю надо писать Pfth но не знаю куда.. помогите разобраться

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

И на будущее, для оформления логов воспользуйся разметкой, заворачивай весь выхлоп make в [сode][/сode].

EXL ★★★★★ ()

Еще два замечания: делай export LANG=C перед сборкой, если хочешь получить помощь (трудно читать кривой перевод сообщений gcc), и никогда ничего не собирай от рута.

По теме: зачем тебе такое старое ядро?

mtk ()
Ответ на: комментарий от EXL

я видел еге, тока я немношка нуб в патчах, дайте сылку на инструкыию или объясните, как патчи ставить... я за этим сюда за рание спасибо!

ratatuy17 ()
Ответ на: комментарий от ratatuy17

В арче сейчас ядро 3.13.5. Есть подозрение что за 5 лет драйвер Wi-Fi хуже не стал.

mtk ()
Ответ на: комментарий от ratatuy17

Создаешь файл fix-compile.patch с таким содежимым:

diff -Naur linux-2.6.32.59_orig/arch/x86/include/asm/ptrace.h linux-2.6.32.59/arch/x86/include/asm/ptrace.h
+++ fix_ptrace.o_compile_error/arch/x86/include/asm/ptrace.h
@@ -130,6 +130,7 @@
 #ifdef __KERNEL__
 
 #include <linux/init.h>
+#include <linux/linkage.h>
 
 struct cpuinfo_x86;
 struct task_struct;
@@ -142,8 +143,8 @@
 			 int error_code, int si_code);
 void signal_fault(struct pt_regs *regs, void __user *frame, char *where);
 
-extern long syscall_trace_enter(struct pt_regs *);
-extern void syscall_trace_leave(struct pt_regs *);
+extern asmregparm long syscall_trace_enter(struct pt_regs *);
+extern asmregparm void syscall_trace_leave(struct pt_regs *);
 
 static inline unsigned long regs_return_value(struct pt_regs *regs)
 { 

Помещаешь этот файл в каталог с исходниками ядра, затем в консоли:

# patch -Np1 < fix-compile.patch
# make

EXL ★★★★★ ()
Ответ на: комментарий от ratatuy17

Можешь вручную «пропатчить» файл.
Всё просто - красные строки (с минусиками) удаляешь из файла «arch/x86/include/asm/ptrace.h»; зеленые строки (с плюсиками) добавляешь в него.

EXL ★★★★★ ()
Ответ на: комментарий от ratatuy17

Нужно заменить, а не вставить.

Воспользуйся командой:

sed -i 's/-m elf_i386/-m32/g' arch/x86/vdso/Makefile

Чтобы выполнить такую замену:

diff --git a/arch/x86/vdso/Makefile b/arch/x86/vdso/Makefile
index 88112b4..f2f71f9 100644
--- a/arch/x86/vdso/Makefile
+++ b/arch/x86/vdso/Makefile
@@ -69,7 +69,7 @@ vdso32.so-$(VDSO32-y)         += sysenter
 vdso32-images                  = $(vdso32.so-y:%=vdso32-%.so)
 
 CPPFLAGS_vdso32.lds = $(CPPFLAGS_vdso.lds)
-VDSO_LDFLAGS_vdso32.lds = -m elf_i386 -Wl,-soname=linux-gate.so.1
+VDSO_LDFLAGS_vdso32.lds = -m32 -Wl,-soname=linux-gate.so.1
 
 # This makes sure the $(obj) subdirectory exists even though vdso32/
 # is not a kbuild sub-make subdirectory.

EXL ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.