gcc4.7编译linux2.6.30的错误解决方法

本文详细介绍了如何解决Linux内核中ptrace.c文件的编译错误,并解决了GCC不支持linker-style架构的问题。通过提供具体的代码修改建议和路径调整,帮助开发者顺利编译和运行Linux内核。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    1.arch/x86/kernel/ptrace.c:1472:17: error: conflicting types for 'syscall_trace_enter' 

       解决方法: 

Patch

--- 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)
 {
以上 引用自https://patchwork.kernel.org/patch/1301031/

     2. gcc: error: elf_i386:No such file or directory

原因: gcc 4.6 不再支持 linker-style 架构。

解决方法:修改 arch/x86/vdso/Makefile: 将以 VDSO_LDFLAGS_vdso.lds 开头所在行的 "-m elf_x86_64" 替换为 "-m64"。 将以 VDSO_LDFLAGS_vdso32.lds 开头所在行的 "-m elf_i386" 替换为 "-m32"。

以上参考http://blog.chinaunix.net/uid-22041495-id-3259660.html


或者也可以将gcc版本降至[3.2, 4.6)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值