打印

我在7楼的**,不是我写的

[复制链接]
4357|30
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
los|  楼主 | 2008-1-27 21:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
phoenixmy| | 2008-1-27 21:47 | 只看该作者

不错,顶一个

使用特权

评论回复
板凳
wangkj| | 2008-1-28 11:47 | 只看该作者

鼓励

使用特权

评论回复
地板
db10| | 2008-1-29 16:00 | 只看该作者

LZ来了有何感想?

 

使用特权

评论回复
5
los|  楼主 | 2008-1-29 20:53 | 只看该作者

感想就是原来楼上是来自深圳的 段大侠

听说而已  嘿嘿!!!!

使用特权

评论回复
6
los|  楼主 | 2008-1-29 21:06 | 只看该作者

感想还有就是浏览器抗广告弹出能力很强

可能是因为那些病毒都是基于windows编写的吧

使用特权

评论回复
7
los|  楼主 | 2008-1-29 22:34 | 只看该作者

http://hi.baidu.com/pp2016001/blog/item/c9077823b552f3509922ed28.html

创建ARM Linux交叉编译环境实践

2007-07-15 10:24

一、准备工作
       
       首先需要一台运行Linux操作系统的PC以完成我们的编译工作。
       其次要准备如下一些源文件。
         1、源文件准备
           binutils-2.14.tar.gz
         ftp://ftp.gnu.org/gnu/binutils/binutils-2.14.tar.gz
           gcc-core-2.95.3.tar.gz
         ftp://ftp.gnu.org/gnu/gcc/gcc-2.95.3/gcc-core-2.95.3.tar.gz
           gcc-g++2.95.3.tar.gz
         ftp://ftp.gnu.org/gnu/gcc/gcc-2.95.3/gcc-g++-2.95.3.tar.gz
           glibc-2.2.4.tar.gz
         ftp://ftp.gnu.org/gnu/glibc/glibc-2.2.4.tar.gz
           glibc-linuxthreads-2.2.4.tar.gz
         ftp://ftp.gnu.org/gnu/glibc/glibc-linuxthreads-2.2.4.tar.gz
           linux-2.4.21.tar.gz
         ftp://ftp.kernle.org/pub/linux/kernel/v2.4/linux-2.4.21.tar.gz
           patch-2.4.21-rmk1.gz # linux kernel patch for arm
         ftp://ftp.arm.linux.org.uk/pub/linux/arm/kernel/v2.4/patch-2.4.21-rmk1.gz
       binutils-2.14.tar.gz这个压缩包包含有ld,ar,as等一些产生或者处理二进制文件的工具。
      gcc-core-2.95.3.tar.gz这个压缩包是GCC的主体部分,GCC是GNU Compiler Collection的简称,顾名思义,它能够编译很多种高级语言,例如C、C++,Java等,而这个压缩包中含有C编译器,及公共部分,而对其他语言的支持,采用另外的压缩包单独发布。
      gcc-g++2.95.3.tar.gz,这个压缩包就是为使GCC能够编译C++程序而单独发布的。
      glibc-2.2.4.tar.gz,libc是很多用户层应用都要用到的库,kernel和bootloader不需要这个库的支持,这个库主体部分封装在这个压缩包内。
      glibc-linuxthreads-2.2.4.tar.gz,这是Libc用于支持Posix线程而单独发布的一个压缩包。
      linux-2.4.21.tar.gz,这个压缩包就是Linux的内核。
      patch-2.4.21-rmk1.gz,这个压缩包是用来给Linux内核打补丁,以使其可以支持ARM的硬件平台。
         2、工作目录搭建
       我们创建如下的目录树结构
         mkdir arm
         mkdir tool-chain
         mkdir build-dir
         mkdir src-dir
         mkdir setup-dir
         mkdir kernel
       
         arm这个目录是我们的最顶层工作目录,我们所有的编译工作都在这里完成。
         tool-chain这个目录是我们交叉编译工具的安装位置,它下面的bin子目录存放我们创建好的编译器,汇编器,连接器,以及编译好的C库也会安装到这个目录之下。
         setup-dir这个目录用来存放我们下载的压缩包。
         src-dir这个目录用于存放binutils,gcc,glibc解压之后的源文件。
         kernel这个目录用来存放内核文件,对内核的配置、编译工作将在这个目录中完成。
         build-dir用来编译src-dir中的源文件,具体就是binutils,gcc,glibc的编译工作将在这个目录下完成。这种源文件目录和编译目录分离的编译方式是GNU所推荐的。
       
         cd ./src-dir
         tar –xvzf ../setup-dir/ binutils-2.14.tar.gz
         tar –xvzf ../setup-dir/ gcc-core-2.95.3.tar.gz
         tar –xvzf ../setup-dir/ glibc-2.2.4.tar.gz
         tar –xvzf ../setup-dir/ glibc-linuxthreads-2.2.4.tar.gz –directory=./glibc-2.2.4
       这样我们在src-dir目录下就形成了3个源文件目录binutils-2.14,gcc- core-2.95,3,glibc-2.2.4,其中分别存放着binutils tools,gcc,glibc的源代码。接下来我们到build-dir中创建3个与这三个源文件目录对应的编译目录。
       
         cd ../build-dir
         mkdir ../build-dir/build-binutils
         mkdir ../build-dir/build-gcc
         mkdir ../build-dir/build-glibc
       我们将在这三个目录中完成对binutils tools, gcc, glibc的配置和编译工作。下面还要把内核文件解压到kernel目录下,并打补丁。
         cd ../kernel
         tar –xvzf ../setup-dir/ linux-2.4.21.tar.gz
         cd ./linux-2.4.21
         patch –p1 < ../../setup-dir/ patch-2.4.21-rmk1
二、开始创建
1、  确定几个系统变量
cd ../../
export TARGET=arm-linux
export PREFIX=../arm/tool-chain
export TARGET_PREFIX=$PREFIX/$TARGET
export KERNEL_SOURCE_LOCATION=../arm/kernel/linux-2.4.21
export PATH=$PREFIX/bin:$PATH
       几个系统变量经常要用到,TARGET定义了目标机,PREFIX是工具链的安装目录,KERNEL_SOURCE_LOCATION是内核文件位置。
2、  创建binutils
       运行如下命令来创建binutils
         cd ./build-dir/build-binutils
         configure ../../src-dir/binutils-2.14/configure –target=$TARGET –prefix=$PREFIX
         make
         make install
       这时$PREFIX/bin下创建了一些文件,包括arm-linux-ld,arm-linux-as等。
3、  编译内核
         cd ../../kernel/linux-2.4.21
       
       改Makefile文件使
         ARCH = arm
         CROSS_COMPILE=arm-linux-
       
         make menuconfig
       在System Types中选择正确的硬件类型
         make dep
       之后执行如下操作
         mkdir $TARGET_PREFIX/include
         cp dR $KERNEL_SOURCE_LOCATION/include/arm-asm
                       RGET_PREFIX/include/asm
         cp dR $KERNEL_SOURCE_LOCATION/include/linux
                       RGET_PREFIX/include/linux
4、  创建boot-trap gcc,这个GCC没有glibc库的支持,所以只能用于编译内核,bootloader等,后面创建C库也要用到这个编译器,所以创建它主要是为创建C库做准备,如果只想编译内核和bootloader那么,就可以到此结束。
         cd ../../build-dir/build-gcc
         ../../src-dir/gcc-2.95.3/configure –target=$TARGET –prefix=$PREFIX
                --with-headers=$ERNEL_SOURCE_LOCATION/include –enable-language=c
                --disable-threads
       然后修改src-dir/gcc-2.95.3/gcc/config/arm/t-linux文件,在
                TARGET_LIBGCC2_CFLAGS中添加如下两个定义
                -Dinhibit-libc –D__gthr_posix_h
         make
         make install
       这时$PREFIX/bin下创建了一些文件,主要创建了arm-linux-gcc。
5、  创建gblic
         cd ../build-glibc
         export CC=arm-linux-gcc
         ../../src-dir/glibc-2.2.4/configure –host=$TARGET –prefix=$TARGET_PREFIX
                              --enable-add-ons
         make
         make install
6、  创建功能健全的GCC,并创建G++
       在成功创建了libc之后,我们就可以创建功能丰富的GCC编译器了,并且可以创建支持编译C++程序的G++。
         cd ../../src-dir
         tar –xvzf ../setup-dir/ gcc-g++2.95.3.tar.gz
         cd ../build-dir/build-gcc
         export CC=gcc
         ../../src-dir/gcc-2.95.3/configure –target=$TARGET –prefix=$PREFIX
                –enable-language=c,c++
       
       然后修改src-dir/gcc-2.95.3/gcc/config/arm/t-linux文件,在
                TARGET_LIBGCC2_CFLAGS中去除如下两个定义
                -Dinhibit-libc –D__gthr_posix_h
         make
         make install
7,至此我们成功的创建了ARM Linux的交叉编译工具

使用特权

评论回复
8
los|  楼主 | 2008-1-29 23:33 | 只看该作者

我搜索一篇关于安装 交叉环境的 **

并且在楼上转载了
文章当题提到的 linux-2.4.21.tar.gz
据我的认识是linux-2.4不支持S3C2440
要 linux-2.6才支持
我的理解对么?
谢谢指点!!

使用特权

评论回复
9
los|  楼主 | 2008-1-31 14:17 | 只看该作者

**走 linux 道路

按照下面的连接下载内核,
要求输入登录密码
怎么办? 我没有登录密码
希望有经验的人,路过指点下   谢谢!!!

linux-2.4.21.tar.gz
ftp://ftp.kernle.org/pub/linux/kernel/v2.4/linux-2.4.21.tar.gz
  
patch-2.4.21-rmk1.gz # linux kernel patch for arm
ftp://ftp.arm.linux.org.uk/pub/linux/arm/kernel/v2.4/patch-2.4.21-rmk1.gz

使用特权

评论回复
10
db10| | 2008-1-31 15:29 | 只看该作者

los

 楼上的**如果是原创的话,可以加裤了。
 

使用特权

评论回复
11
LOS| | 2008-2-1 00:12 | 只看该作者

我在7楼的**,不是我写的

如果我能写出这么有水平的文章
我也不用那么多的疑问拉

使用特权

评论回复
12
brandnew| | 2008-2-1 10:00 | 只看该作者

s

wget ftp://ftp.kernle.org/pub/linux/kernel/v2.4/linux-2.4.21.tar.gz
wget ftp://ftp.arm.linux.org.uk/pub/linux/arm/kernel/v2.4/patch-2.4.21-rmk1.gz

不需要密码呀。

使用特权

评论回复
13
los|  楼主 | 2008-2-16 11:06 | 只看该作者

天天都在学 linux

天天都在学 linux

学习了多天linux,
对linux有了粗略的了解
linux的结构图大概如下
系统上电后,首先从ppcboot运行  然后运行内核 
linux内核引导完毕,就试图mount一个root文件系统

请问main函数放在那里?? 
是放在内核里面,还是放在文件系统里面?
main函数的地址是如何确定的(也就是内核如何知道main函数的地址)??
还有内核如何知道文件系统的位置?

希望大家指点一下 , 谢谢

 /                   nand flash                           
———————————————————------------------------
|                |               |                          |
|                |               |                          |
| ppcboot        |  内核         |   rootfs                   |
|                |               |             /bin           |
|                |               |             /dev           |
|                |               |             /etc           |
|____________  |________ ___|_        _      home   _  _
                                              /lib
                                              /mnt
                                              /proc
                                              /sbin
                                              /tmp
                                              /usr
                                              /var

使用特权

评论回复
14
dld2| | 2008-2-16 11:19 | 只看该作者

想想windows

main自然在应用程序里。应用程序可以通过自动运行的脚本由内核来启动。
这个地址是虚地址,物理地址是linux自动为进程分配的。

使用特权

评论回复
15
los|  楼主 | 2008-2-16 11:23 | 只看该作者

dld2 请问应用程序又是放在那里的呢 ??

使用特权

评论回复
16
dld2| | 2008-2-16 11:23 | 只看该作者

文件系统里

使用特权

评论回复
17
los|  楼主 | 2008-2-16 11:27 | 只看该作者

dld2 文件系统有N多个文件夹的哦!! 总不会任意一个文件

rootfs
          /bin 
          /dev
          /etc
          /home
          /lib
          /mnt
          /proc
          /sbin
          /tmp
          /usr
          /var

使用特权

评论回复
18
dld2| | 2008-2-16 11:29 | 只看该作者

那当然不是

这些文件夹各有说法。有一大堆应用程序,就看你去启动哪一个。

使用特权

评论回复
19
los|  楼主 | 2008-2-16 11:34 | 只看该作者

我也知道不是任意一个文件夹,

就是想知道是在那个位置 ??

使用特权

评论回复
20
los|  楼主 | 2008-2-16 11:37 | 只看该作者

至死不渝 的 学习 linux

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

los

63

主题

192

帖子

2

粉丝