大家好 !!! 我是使用 linux 来上21ic的 打响了学习linux的第
<br /><br /><br /><br />不错,顶一个
鼓励
LZ来了有何感想?
感想就是原来楼上是来自深圳的 段大侠
听说而已 嘿嘿!!!!感想还有就是浏览器抗广告弹出能力很强
可能是因为那些病毒都是基于windows编写的吧顶
http://hi.baidu.com/pp2016001/blog/item/c9077823b552f3509922ed28.html<br /><br />创建ARM Linux交叉编译环境实践<br /><br />2007-07-15 10:24<br /><br />一、准备工作<br /> <br /> 首先需要一台运行Linux操作系统的PC以完成我们的编译工作。<br /> 其次要准备如下一些源文件。<br /> 1、源文件准备<br /> binutils-2.14.tar.gz<br /> ftp://ftp.gnu.org/gnu/binutils/binutils-2.14.tar.gz<br /> gcc-core-2.95.3.tar.gz<br /> ftp://ftp.gnu.org/gnu/gcc/gcc-2.95.3/gcc-core-2.95.3.tar.gz<br /> gcc-g++2.95.3.tar.gz<br /> ftp://ftp.gnu.org/gnu/gcc/gcc-2.95.3/gcc-g++-2.95.3.tar.gz<br /> glibc-2.2.4.tar.gz<br /> ftp://ftp.gnu.org/gnu/glibc/glibc-2.2.4.tar.gz<br /> glibc-linuxthreads-2.2.4.tar.gz<br /> ftp://ftp.gnu.org/gnu/glibc/glibc-linuxthreads-2.2.4.tar.gz<br /> linux-2.4.21.tar.gz<br /> ftp://ftp.kernle.org/pub/linux/kernel/v2.4/linux-2.4.21.tar.gz<br /> patch-2.4.21-rmk1.gz # linux kernel patch for arm<br /> ftp://ftp.arm.linux.org.uk/pub/linux/arm/kernel/v2.4/patch-2.4.21-rmk1.gz<br /> binutils-2.14.tar.gz这个压缩包包含有ld,ar,as等一些产生或者处理二进制文件的工具。<br /> gcc-core-2.95.3.tar.gz这个压缩包是GCC的主体部分,GCC是GNU Compiler Collection的简称,顾名思义,它能够编译很多种高级语言,例如C、C++,Java等,而这个压缩包中含有C编译器,及公共部分,而对其他语言的支持,采用另外的压缩包单独发布。<br /> gcc-g++2.95.3.tar.gz,这个压缩包就是为使GCC能够编译C++程序而单独发布的。<br /> glibc-2.2.4.tar.gz,libc是很多用户层应用都要用到的库,kernel和bootloader不需要这个库的支持,这个库主体部分封装在这个压缩包内。<br /> glibc-linuxthreads-2.2.4.tar.gz,这是Libc用于支持Posix线程而单独发布的一个压缩包。<br /> linux-2.4.21.tar.gz,这个压缩包就是Linux的内核。<br /> patch-2.4.21-rmk1.gz,这个压缩包是用来给Linux内核打补丁,以使其可以支持ARM的硬件平台。<br /> 2、工作目录搭建<br /> 我们创建如下的目录树结构<br /> mkdir arm<br /> mkdir tool-chain<br /> mkdir build-dir<br /> mkdir src-dir<br /> mkdir setup-dir<br /> mkdir kernel<br /> <br /> arm这个目录是我们的最顶层工作目录,我们所有的编译工作都在这里完成。<br /> tool-chain这个目录是我们交叉编译工具的安装位置,它下面的bin子目录存放我们创建好的编译器,汇编器,连接器,以及编译好的C库也会安装到这个目录之下。<br /> setup-dir这个目录用来存放我们下载的压缩包。<br /> src-dir这个目录用于存放binutils,gcc,glibc解压之后的源文件。<br /> kernel这个目录用来存放内核文件,对内核的配置、编译工作将在这个目录中完成。<br /> build-dir用来编译src-dir中的源文件,具体就是binutils,gcc,glibc的编译工作将在这个目录下完成。这种源文件目录和编译目录分离的编译方式是GNU所推荐的。<br /> <br /> cd ./src-dir<br /> tar –xvzf ../setup-dir/ binutils-2.14.tar.gz<br /> tar –xvzf ../setup-dir/ gcc-core-2.95.3.tar.gz<br /> tar –xvzf ../setup-dir/ glibc-2.2.4.tar.gz<br /> tar –xvzf ../setup-dir/ glibc-linuxthreads-2.2.4.tar.gz –directory=./glibc-2.2.4<br /> 这样我们在src-dir目录下就形成了3个源文件目录binutils-2.14,gcc- core-2.95,3,glibc-2.2.4,其中分别存放着binutils tools,gcc,glibc的源代码。接下来我们到build-dir中创建3个与这三个源文件目录对应的编译目录。<br /> <br /> cd ../build-dir<br /> mkdir ../build-dir/build-binutils<br /> mkdir ../build-dir/build-gcc<br /> mkdir ../build-dir/build-glibc<br /> 我们将在这三个目录中完成对binutils tools, gcc, glibc的配置和编译工作。下面还要把内核文件解压到kernel目录下,并打补丁。<br /> cd ../kernel<br /> tar –xvzf ../setup-dir/ linux-2.4.21.tar.gz<br /> cd ./linux-2.4.21<br /> patch –p1 < ../../setup-dir/ patch-2.4.21-rmk1<br />二、开始创建<br />1、 确定几个系统变量<br />cd ../../<br />export TARGET=arm-linux<br />export PREFIX=../arm/tool-chain<br />export TARGET_PREFIX=$PREFIX/$TARGET<br />export KERNEL_SOURCE_LOCATION=../arm/kernel/linux-2.4.21<br />export PATH=$PREFIX/bin:$PATH<br /> 几个系统变量经常要用到,TARGET定义了目标机,PREFIX是工具链的安装目录,KERNEL_SOURCE_LOCATION是内核文件位置。<br />2、 创建binutils<br /> 运行如下命令来创建binutils<br /> cd ./build-dir/build-binutils<br /> configure ../../src-dir/binutils-2.14/configure –target=$TARGET –prefix=$PREFIX<br /> make<br /> make install<br /> 这时$PREFIX/bin下创建了一些文件,包括arm-linux-ld,arm-linux-as等。<br />3、 编译内核<br /> cd ../../kernel/linux-2.4.21<br /> <br /> 改Makefile文件使<br /> ARCH = arm<br /> CROSS_COMPILE=arm-linux-<br /> <br /> make menuconfig<br /> 在System Types中选择正确的硬件类型<br /> make dep<br /> 之后执行如下操作<br /> mkdir $TARGET_PREFIX/include<br /> cp dR $KERNEL_SOURCE_LOCATION/include/arm-asm<br /> RGET_PREFIX/include/asm<br /> cp dR $KERNEL_SOURCE_LOCATION/include/linux<br /> RGET_PREFIX/include/linux<br />4、 创建boot-trap gcc,这个GCC没有glibc库的支持,所以只能用于编译内核,bootloader等,后面创建C库也要用到这个编译器,所以创建它主要是为创建C库做准备,如果只想编译内核和bootloader那么,就可以到此结束。<br /> cd ../../build-dir/build-gcc<br /> ../../src-dir/gcc-2.95.3/configure –target=$TARGET –prefix=$PREFIX<br /> --with-headers=$ERNEL_SOURCE_LOCATION/include –enable-language=c<br /> --disable-threads<br /> 然后修改src-dir/gcc-2.95.3/gcc/config/arm/t-linux文件,在<br /> TARGET_LIBGCC2_CFLAGS中添加如下两个定义<br /> -Dinhibit-libc –D__gthr_posix_h<br /> make<br /> make install<br /> 这时$PREFIX/bin下创建了一些文件,主要创建了arm-linux-gcc。<br />5、 创建gblic<br /> cd ../build-glibc<br /> export CC=arm-linux-gcc<br /> ../../src-dir/glibc-2.2.4/configure –host=$TARGET –prefix=$TARGET_PREFIX<br /> --enable-add-ons<br /> make<br /> make install<br />6、 创建功能健全的GCC,并创建G++<br /> 在成功创建了libc之后,我们就可以创建功能丰富的GCC编译器了,并且可以创建支持编译C++程序的G++。<br /> cd ../../src-dir<br /> tar –xvzf ../setup-dir/ gcc-g++2.95.3.tar.gz<br /> cd ../build-dir/build-gcc<br /> export CC=gcc<br /> ../../src-dir/gcc-2.95.3/configure –target=$TARGET –prefix=$PREFIX<br /> –enable-language=c,c++<br /> <br /> 然后修改src-dir/gcc-2.95.3/gcc/config/arm/t-linux文件,在<br /> TARGET_LIBGCC2_CFLAGS中去除如下两个定义<br /> -Dinhibit-libc –D__gthr_posix_h<br /> make<br /> make install<br />7,至此我们成功的创建了ARM Linux的交叉编译工具我搜索一篇关于安装 交叉环境的 **
并且在楼上转载了<br />文章当题提到的 linux-2.4.21.tar.gz<br />据我的认识是linux-2.4不支持S3C2440<br />要 linux-2.6才支持<br />我的理解对么?<br />谢谢指点!!**走 linux 道路
按照下面的连接下载内核,<br />要求输入登录密码<br />怎么办? 我没有登录密码<br />希望有经验的人,路过指点下 谢谢!!!<br /><br />linux-2.4.21.tar.gz<br />ftp://ftp.kernle.org/pub/linux/kernel/v2.4/linux-2.4.21.tar.gz<br /> <br />patch-2.4.21-rmk1.gz # linux kernel patch for arm<br />ftp://ftp.arm.linux.org.uk/pub/linux/arm/kernel/v2.4/patch-2.4.21-rmk1.gzlos
楼上的**如果是原创的话,可以加裤了。<br /> 我在7楼的**,不是我写的
如果我能写出这么有水平的文章<br />我也不用那么多的疑问拉s
wget ftp://ftp.kernle.org/pub/linux/kernel/v2.4/linux-2.4.21.tar.gz<br />wget ftp://ftp.arm.linux.org.uk/pub/linux/arm/kernel/v2.4/patch-2.4.21-rmk1.gz<br /><br />不需要密码呀。<br />天天都在学 linux
天天都在学 linux<br /><br />学习了多天linux,<br />对linux有了粗略的了解<br />linux的结构图大概如下<br />系统上电后,首先从ppcboot运行 然后运行内核 <br />linux内核引导完毕,就试图mount一个root文件系统<br /><br />请问main函数放在那里?? <br />是放在内核里面,还是放在文件系统里面?<br />main函数的地址是如何确定的(也就是内核如何知道main函数的地址)??<br />还有内核如何知道文件系统的位置?<br /><br />希望大家指点一下 , 谢谢<br /><br /> / nand flash <br />———————————————————------------------------<br />| | | |<br />| | | |<br />| ppcboot | 内核 | rootfs |<br />| | | /bin |<br />| | | /dev |<br />| | | /etc |<br />|____________ |________ ___|_ _ home _ _<br /> /lib<br /> /mnt<br /> /proc<br /> /sbin<br /> /tmp<br /> /usr<br /> /var想想windows
main自然在应用程序里。应用程序可以通过自动运行的脚本由内核来启动。<br />这个地址是虚地址,物理地址是linux自动为进程分配的。dld2 请问应用程序又是放在那里的呢 ??
文件系统里
dld2 文件系统有N多个文件夹的哦!! 总不会任意一个文件
rootfs<br /> /bin <br /> /dev<br /> /etc<br /> /home<br /> /lib<br /> /mnt<br /> /proc<br /> /sbin<br /> /tmp<br /> /usr<br /> /var<br />那当然不是
这些文件夹各有说法。有一大堆应用程序,就看你去启动哪一个。我也知道不是任意一个文件夹,
就是想知道是在那个位置 ??至死不渝 的 学习 linux
页:
[1]
2