刚修复了集成盘在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. 修改后的源代码
http://yming0221.download.csdn.net/
分享到:
相关推荐
linux-0.11的GCC4.3下可编译源码 修改了相应的makefile和代码使之支持GCC4.3的自动优化
arm-linux-gcc-4.3.2.1
可以直接make的linux-0.11源码,得到Image
由于上传文件大小限制,将工具链分为2个压缩文件,arm-linux-gcc-4.3.2-1.tgz和arm-linux-gcc-4.3.2-2.tgz 请务必下载完整,分别进行安装。 安装方法: 1.ubuntu 终端输入 tar -zxvf arm-linux-gcc-4.3.2-1.tgz -C ...
linux-0.11-060618-gcc4.tar.gz,基础代码 --》在上面修改编译在ubuntu12.04运行的linux0.11系统比较方便
linux-0.11-060617-gcc4-diff.gz
找了好久才找到的这个,以前使用低版本的arm-linux-gcc交叉编译工具时,编译QT出错,这里找了arm-linux-gcc-5.4.0,放在这里存下
linux-arm-gcc-4.9.2交叉编译工具,已验证,决对可以使用
第四步:将arm-linux-gcc-4.3.2.bz2解压到/usr/local/arm目录下 sudo tar xvf arm-linux-gcc-4.3.2.bz2 -C /usr/local/arm 第五步:进入到 /usr/local/arm cd /usr/local/arm cd 4.3.2 cd bin pwd得到arm-linux-gcc...
aarch64-linux-gnu-gcc gcc version 7.5.0 (Linaro GCC 7.5-2019.12) openssl-1.1.1g
arm-linux-gcc编译选项,包括相关参数的详细说明等等。
Ubuntu安装arm-linux-gcc交叉编译工具 arm-linux-gcc工具包arm-linux-gcc-5.4.0.tar.gz
arm-none-linux-gnueabi-gcc-4.8.3 已验证可用,请放心使用。arm-none-linux-gnueabi-gcc是 Codesourcery 公司(目前已经被Mentor收购)基于GCC推出的的ARM交叉编译工具。可用于交叉编译ARM系统中所有环节的代码,...
交叉编译 arm-linux-gcc-4.4.3.tar.gz
arm-linux-gcc交叉编译器,版本3.4.1,用于Linux下的ARM开发。 安装方法: 1. tar zxvf arm-linux-gcc-3.4.1.tgz -C/ 2. 编辑 ~/.bashrc ,加入 export PATH=$PATH:/usr/local/arm/3.4.1/bin 3. 验证安装 [root@...
arm-linux-gcc和arm-elf-gcc 是嵌入式交叉编译工具最常用的,但是他们之间又怎样的区别呢?
windows下生成arm-linux-gcc的工具.省了自己配置和编译的很多麻烦.生成的arm-linux-gcc自己进行过验证,可以使用.
linux0.11 gcc编译实验,一次编译实践的尝试
arm-linux-gcc-5.4.0.tar.gz交叉编译器
arm-linux-gcc-4.5.1(友善之臂提供的最新交叉编译器)!