免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3857 | 回复: 2
打印 上一主题 下一主题

建立交叉编译环境时遇到的问题,请高手指点!!!!!!!! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-05-19 17:06 |只看该作者 |倒序浏览
2. 设置环境变量,准备源码及相关补丁
2.1 设置环境变量
arm@ubuntu:~$ vi ~/.bashrc
export PREFIX=/usr/local/arm/3.4.4
export TARGET=arm-linux
export SYSROOT=${PREFIX}/sysroot
export ARCH=arm
export CROSS_COMPILE=${TARGET}-
export PATH=${PREFIX}/binPATH
export SRC=/home/arm/dev_home/btools/tchain3.4.4
注意: 如果你已经安装过arm-linux-gcc,并且已经加入了环境变量中,将其从环境中去掉保证root用户和arm用户环境中没有arm-linux-gcc

2.2 准备源码包

2.2.1 binutils
名称:binutils-2.16.tar.gz

2.2.2 gcc
名称: gcc-3.4.4.tar.bz2

2.2.3 glibc
名称:   glibc-2.3.5.tar.gz                    (我使用的是2.3.3)
           glibc-linuxthreads-2.3.5.tar.gz  (我使用的是2.3.3)

2.2.4 linux kernel
名称:   linux-2.6.14.1.tar.bz2            (我使用的是2.6.16.1)

2.2.5 gdb
名称: gdb-6.4.tar.gz

2.3 准备补丁
2.3.1 ioperm.c.diff
作用: 打修正ioperm()函数

2.3.2 flow.c.diff
作用: 修改gcc一处bug

2.3.3 t-linux.diff
作用: 该补丁用于产生crti.o和crtn.o文件.

2.4 编译GNU binutils

重新以arm用户登陆,让新设置得环境变量起作用
arm@ubuntu:~/dev_home/btools/tchain3.4.4$ tree -L 1
.
|-- BUILD
|-- binutils-2.16
|-- binutils-2.16.tar.gz
|-- flow.c.diff
|-- gcc-3.4.4
|-- gcc-3.4.4.tar.bz2
|-- gdb-6.4.tar.gz
|-- glibc-2.3.5
|-- glibc-2.3.5.tar.gz
|-- glibc-linuxthreads-2.3.5.tar.gz
|-- ioperm.c.diff
|-- linux-2.6.14.1.tar.bz2
`-- t-linux.diff
arm@ubuntu:~$ su arm
arm@ubuntu:~$ cd ${SRC}
arm@ubuntu:~/dev_home/btools/tchain3.4.4$ tar zxvf binutils-2.16.tar.gz
arm@ubuntu:~/dev_home/btools/tchain3.4.4$ mkdir -p BUILD/binutils-2.16  (我使用的命令是 mkdir -p BUILD/x/binutils-2.16)
arm@ubuntu:~/dev_home/btools/tchain3.4.4$ cd BUILD/binutils-2.16   (我使用的命令是 cd BUILD/x/binutils-2.16   )
arm@ubuntu:~/dev_home/btools/tchain3.4.4/BUILD/binutils-2.16$ ../../binutils-2.16/configure --prefix=${PREFIX} --target=${TARGET} --with-sysroot=${SYSROOT}
arm@ubuntu:~/dev_home/btools/tchain3.4.4/BUILD/binutils-2.16$ make
arm@ubuntu:~/dev_home/btools/tchain3.4.4/BUILD/binutils-2.16$ su root
root@ubuntu:/home/arm/dev_home/btools/tchain3.4.4/BUILD/binutils-2.16#make install
root@ubuntu:/home/arm/dev_home/btools/tchain3.4.4/BUILD/binutils-2.16# exit
arm@ubuntu:~/dev_home/btools/tchain3.4.4/BUILD/binutils-2.16$
                                                                                                ////////以上都正常
2.5 准备内核头文件
2.5.1 使用当前平台的gcc编译内核头文件
arm@ubuntu:~/dev_home/btools/tchain3.4.4/BUILD/binutils-2.16$ cd ${KERNEL}  
(这个环境变量在前面.bashrc中没有被定义,我是直接 cd~/dev_home/kernel)
arm@ubuntu:~/dev_home/kernel$
arm@ubuntu:~/dev_home/kernel$ tar jxvf ../btools/tchain3.4.4/linux-2.6.14.1.tar.bz2
arm@ubuntu:~/dev_home/kernel$ cd linux-2.6.14.1/
arm@ubuntu:~/dev_home/kernel/linux-2.6.14.1$ cp arch/arm/configs/smdk2410_defconfig  .config(没使用)
本人是用的CPU是S3C2410,选择了一个配置文件smdk2410_defconfig,你可以根据你的需要选择
arm@ubuntu:~/dev_home/kernel/linux-2.6.14.1$ make ARCH=arm menuconfig   (我是使用 make ARCH=arm menuconfig 进入设置界面后)  
   System Type  --->   
            ARM system type (Samsung S3C2410)  --->             设置成  Samsung S3C2410                        
                         S3C24XX Implementations  --->                进入S3C24XX Implementations 选择了 SMDK2410/A9M2410  
                                   [ ] Simtec Electronics ANUBIS                                         
                                   [ ] Simtec Electronics BAST (EB2410ITX)                              
                                   [ ] IPAQ H1940                                                        
                                   [ ] Acer N30                                                         
                                    
SMDK2410/A9M2410                                                  
                                   [ ] SMDK2440                                                         
                                   [ ] Thorcom VR1000                                                   
                                   [ ] HP iPAQ rx3715                                                   
                                   [ ] NexVision OTOM Board                                             
                                   [ ] NexVision NEXCODER 2440 Light Board                                       
                         --- S3C2410 Boot                                                         
                         --- S3C2410 Setup                                                        
                         [ ] S3C2410 DMA support                                                  
                         (0) S3C2410 UART to use for low-level messages                           
                         --- Processor Type                                                      
                         --- Processor Features                                                   
                        
Support Thumb user binaries                                       
                                                                    选择了Support Thumbuser binarie                                                                                
                         [ ] Disable I-Cache                                                      
                         [ ] Disable D-Cache                                                      
                         [ ]   Force write through D-cache                                       
退出时            
Do you wish to save your new kernel configuration?        
                                 No  >      
选择Yes
                                                                     选择YES保存

之后出现如下语句:
scripts/kconfig/mconf   arch/arm/kconfig
#
#using defaults found in .config
#
#End of Linux kernel configuration
#Execute 'make' to build the kernel or try 'make help'

make[1]:execvp:arm-linuxgcc:权限不够   
make[1]:execvp:arm-linuxgcc:权限不够
如果再执行make命令会出现如下语句:
make:execvp:arm-linuxgcc:权限不够
CHK     include/linux/version.h
SPLIT  include/linux/autoconf.h ->include/asm-arm/arch-s3c2410
make[1]:"include/asm-arm/mach-types.h"是最新的
CC      arch/arm/kernel/asm-offset.s
/bin/sh:arm-linuxgcc:命令没有被发现
make[1]:[arch/arm/kernel/asm-offset.s] 错误127
make:[preapare0] 错误2
问题比较多,由于想自己建立一个交叉环境故而较麻烦,如能回答感激不敬。

论坛徽章:
0
2 [报告]
发表于 2008-05-19 17:07 |只看该作者
export PATH=${PREFIX}/binPATH

论坛徽章:
0
3 [报告]
发表于 2008-05-19 17:16 |只看该作者

回复 #1 yd2763132 的帖子

可以用“which arm-linuxgcc”来检查一下,看看你用的arm-linuxgcc是不是你刚刚安装的编译器。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP