设为首页 加入收藏

TOP

Linux-0.11 GCC4.3下可编译运行的源码
2014-11-24 07:54:07 来源: 作者: 【 】 浏览:0
Tags:Linux-0.11 GCC4.3 编译 运行 源码

刚修复了集成盘在gcc 4.3下无法工作的问题。


启动是只是显示“Loading System ...”


1. 原因


gcc 4.3对内存拷贝优化时出错,当然,glibc里头的memcpy是没有问题的,因为glibc中的memcpy实现方式不一样,但是linux-0.11里头的memcpy有问题。类似的 *p1=*p2 操作在gcc 4.3中会自动优化,而在4.3之前的版本会自动调用memcpy,所以这里我们把类似的 *p1=*p2 操作修改为 memcpy,但是编译时不能用优化选项,否则gcc 4.3还是会对memcpy优化,直接把代码嵌套到使用memcpy的代码,而不会调用,这种优化的结果并不正确,所以就导致了问题。


2. 修复办法


把kernel/blk_drv/ramdisk.c中的如下行:


*((struct d_super_block *) &s) = *((struct d_super_block *) bh->b_data);


修改为:


memcpy(((struct d_super_block *) &s), \


((struct d_super_block *) bh->b_data), \


sizeof(struct d_super_block));


另外编译时,去掉-O1选项,即确保kernel/blk_drv/Makefile中的CFLAGS没有-O1选项


3. 修改后的源代码下载在Linux公社的1号FTP服务器里,下载地址:


密码:www.muu.cc


在 2011年LinuxIDC.com\3月\Linux-0.11 GCC4.3下可编译运行的源码


下载方法见 http://www.linuxidc.net/thread-1187-1-1.html


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Linux 驱动相关文件系统 下一篇GCC Inline ASM GCC内联汇编

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·在 Redis 中如何查看 (2025-12-26 03:19:03)
·Redis在实际应用中, (2025-12-26 03:19:01)
·Redis配置中`require (2025-12-26 03:18:58)
·Asus Armoury Crate (2025-12-26 02:52:33)
·WindowsFX (LinuxFX) (2025-12-26 02:52:30)