1.linuxè¿è¡armç¨åºarmlinuxç¨åº
2.ARM & Linux 基础学习 / 配置交叉编译工具链 / 编译 Linux 应用和驱动 / 编译内核
3.qemu搭建arm64 linux kernel环境
4.å¦ä½å®è£
arm-linux-gcc
5.å¦ä½å¶ä½arm-linux-gccç¼è¯å·¥å
·
linuxè¿è¡armç¨åºarmlinuxç¨åº
å¦ä½ç¼è¯armlinuxçgoï¼Golangä¹å°±æ¯Goè¯è¨ï¼ç°å¨å·²ç»åè¡å°1.4.1çæ¬äºï¼è¯è¨ç¹æ§ä¼è¶æ§åèåGoogle强大é å±±ä»ä¹çå°±ä¸å¤è¯´äºãGolangçå®æ¹æä¾äºå¤ä¸ªå¹³å°ä¸çäºè¿å¶å®è£ å ï¼éæ¾çæ¯å¹¶é没æåå¸ARMå¹³å°çäºè¿å¶å®è£ å ãARMå¹³å°æ²¡åæ³ç´æ¥ä»å®ç½ä¸è½½äºè¿å¶å®è£ å æ¥å®è£ ï¼å¥½å¨Golangæ¯æ¯æå¤å¹³å°å¹¶ä¸å¼æºçè¯è¨ï¼å æ¤å¯ä»¥éè¿ç´æ¥å¨ARMå¹³å°ä¸ç¼è¯æºä»£ç æ¥å®è£ ãæ´ä¸ªè¿ç¨ä¸»è¦å æ¬ç¼è¯å·¥å ·é ç½®ãè·åGolangæºä»£ç ã设置Golangç¼è¯ç¯å¢åéãç¼è¯ãé ç½®Golangè¡ç¯å¢åéçæ¥éª¤ã
注ï¼æ¬æéç¨æ èæ´¾åæµè¯ï¼å 为æ èæ´¾æ¯åºäºARMå¹³å°çã
1ãç¼è¯å·¥å ·é ç½®
æ®è¯´ä¸ä¸ªçæ¬çgolangç¼è¯å·¥å ·è¦ä½¿ç¨golangèªå·±æ¥åï¼ä½ç®åè¿æ¯ä½¿ç¨Cç¼è¯å·¥å ·çãå æ¤ï¼é¦å è¦é 置好Cç¼è¯å·¥å ·ï¼
1.1å¨UbuntuæDebianå¹³å°ä¸å¯ä»¥ä½¿ç¨sudoapt-getinstallgcclibc6-devå½ä»¤å®è£ ï¼æ èæ´¾çRaspBianç³»ç»æ¯åºäºDebianä¿®æ¹çï¼æ以å¯ä»¥ä½¿ç¨è¿ç§æ¹æ³å®è£ ã
1.2å¨RedHatæCentOS6å¹³å°ä¸å¯ä»¥ä½¿ç¨sudoyuminstallgcclibc-develå½ä»¤å®è£ ã
å®è£ å®æåå¯ä»¥è¾å ¥gcc--versionå½ä»¤éªè¯æ¯å¦æåå®è£ ã
2ãè·ågolangæºä»£ç
2.1ç´æ¥ä»å®ç½ä¸è½½æºä»£ç å缩å ã
golangå®ç½æä¾golangçæºä»£ç å缩å ï¼å¯ä»¥ç´æ¥ä¸è½½ï¼ææ°ç1.4.1çæ¬æºä»£ç é¾æ¥ï¼/golang/go1.4.1.src.tar.gz
2.2使ç¨gitå·¥å ·è·åã
golang使ç¨gitçæ¬ç®¡çå·¥å ·ï¼ä¹å¯ä»¥ä½¿ç¨gitè·ågolangæºä»£ç ãæ¨è使ç¨è¿ä¸ªæ¹æ³ï¼å 为以åå¯ä»¥éæ¶è·åææ°çgolangæºä»£ç ã
2.2.1é¦å 确认ARMå¹³å°ä¸å·²ç»å®è£ äºgitå·¥å ·ï¼å¯ä»¥ä½¿ç¨git--versionå½ä»¤ç¡®è®¤ãä¸è¬linuxå¹³å°é½å®è£ äºgitï¼æ²¡æçè¯å¯ä»¥èªè¡å®è£ ï¼ä¸åå¹³å°çå®è£ æ¹æ³å¯ä»¥åèï¼/download/linux
2.2.2å éè¿ç¨golangçgitä»åºå°æ¬å°
å¨ç»ç«¯cdå°ä½ æ³è¦å®è£ golangçç®å½ï¼ç¡®ä¿è¯¥ç®å½ä¸æ²¡æå为goçç®å½ãç¶å以ä¸å½ä»¤è·å代ç ä»åºï¼
gitclone/go
大éå°åºå¯è½ä¼è·å失败ï¼å¨ä¸ç¿»å¢çæ åµä¸æè¯äºå 次é½æ²¡æåï¼åå 大家é½æçã好å¨googleå·²ç»å°golangä¹æ管å°githubä¸é¢ï¼æ以ä¹å¯ä»¥éè¿ä¸é¢å½ä»¤è·åï¼
gitclone/golang/go.git
è§ç½ç»æ åµï¼ä¸è½½å¯è½éè¦ä¸å°æ¶é´ãæ2Mç带宽è±äºå°è¿ä¸¤ä¸ªå°æ¶æä¸è½½å®ï¼è½ç¶æ´ä¸ªé¡¹ç®ä¸è¿å åå ==
ä¸è½½å®æåï¼å¯ä»¥çå°ç®å½ä¸å¤äºä¸ä¸ªgoç®å½ï¼éé¢å³ä¸ºgolangçæºä»£ç ï¼å¨ç»ç«¯ä¸æ§è¡cdgoå½ä»¤è¿å ¥è¯¥ç®å½ã
æ§è¡ä¸é¢å½ä»¤æ£åºgo1.4.1çæ¬çæºä»£ç ï¼å 为ç°å¨å·²ç»ææ°ç代ç æ交ä¸å»äºï¼ææ°ç代ç å¯è½ä¸æ¯æ稳å®çï¼
gitcheckoutgo1.4.1
è³æ¤ï¼ææ°1.4.1åè¡ççæºä»£ç è·åå®æ¯
3ã设置golangçç¼è¯ç¯å¢åé
主è¦æGOROOTãGOOSãGOARCHãGOARMå个ç¯å¢åééè¦è®¾ç½®ï¼å 解éå个ç¯å¢åéçæä¹ã
3.1GOROOT
主è¦ä»£è¡¨golangæ ç»æç®å½çè·¯å¾ï¼ä¹å°±æ¯ä¸é¢gitæ£åºçgoç®å½ãä¸è¬å¯ä»¥ä¸ç¨è®¾ç½®è¿ä¸ªç¯å¢åéï¼å 为ç¼è¯çæ¶åé»è®¤ä¼ä»¥goç®å½ä¸srcåç®å½ä¸çall.bashèæ¬è¿è¡æ¶çç¶ç®å½ä½ä¸ºGOROOTçå¼ã为äºä¿é©èµ·è§ï¼å¯ä»¥ç´æ¥è®¾ç½®ä¸ºgoç®å½çè·¯å¾ã
3.2GOOSåGOARCH
åå«ä»£è¡¨ç¼è¯çç®æ ç³»ç»åå¹³å°ï¼å¯éå¼å¦ä¸ï¼
GOOSGOARCH
darwin
darwinamd
dragonfly
dragonflyamd
freebsd
freebsdamd
freebsdarm
linux
linuxamd
linuxarm
netbsd
netbsdamd
netbsdarm
openbsd
openbsdamd
plan
plan9amd
solarisamd
windows
windowsamd
éè¦æ³¨æçæ¯è¿ä¸¤ä¸ªå¼ä»£è¡¨çæ¯ç®æ ç³»ç»åå¹³å°ï¼èä¸æ¯ç¼è¯æºä»£ç çç³»ç»åå¹³å°ãæ èæ´¾çRaspBianæ¯linuxç³»ç»ï¼æ以è¿äºGOOS设置为linuxï¼GOARCH设置为armã
3.3GOARM
表示使ç¨çæµ®ç¹è¿ç®åå¤çå¨çæ¬å·ï¼åªå¯¹armå¹³å°æç¨ï¼å¯éå¼æ5ï¼6ï¼7ãå¦ææ¯å¨ç®æ å¹³å°ä¸ç¼è¯æºä»£ç ï¼è¿ä¸ªå¼å¯ä»¥ä¸è®¾ç½®ï¼å®ä¼èªå¨å¤æéè¦ä½¿ç¨åªä¸ä¸ªçæ¬ã
æ»ç»ä¸æ¥ï¼å¨æ èæ´¾ä¸è®¾ç½®golangçç¼è¯ç¯å¢åéï¼å¯ç¼è¾$HOME/.bashrcæ件ï¼å¨æ«å°¾æ·»å ä¸é¢å 容ï¼
exportGOROOT=ä½ çgoç®å½è·¯å¾
exportGOOS=linux
exportGOARCH=arm
ç¼è¾å®åä¿åï¼æ§è¡source~/.bashrcå½ä»¤è®©ä¿®æ¹çæã
4ãç¼è¯æºä»£ç
ç¯å¢åéé ç½®å®æèªåå°±å¯ä»¥å¼å§ç¼è¯æºä»£ç ãå¨goç®å½ä¸çsrcåç®å½ä¸ï¼ä¸»è¦æall.bashåmake.bash两个èæ¬ï¼å¦å¤è¿æ两个all.batåmake.batèæ¬éç¨äºwindowå¹³å°ï¼ãç¼è¯å®é ä¸å°±æ¯æ§è¡å ¶ä¸ä¸ä¸ªèæ¬ï¼ä¸¤è çåºå«å¨äºall.bashå¨ç¼è¯å®æåè¿ä¼æ§è¡ä¸äºæµè¯å¥ä»¶ãå¦æå¸æåªç¼è¯ä¸æµè¯ï¼å¯ä»¥è¿è¡make.bashèæ¬ã使ç¨cdå½ä»¤è¿å ¥goä¸srcç®å½ï¼æ§è¡./all.bashæè ./make.bashå½ä»¤å³å¯å¼å§ç¼è¯ãç±äºç¡¬ä»¶æ åµä¸åï¼ç¼è¯èè´¹çæ¶é´ä¸åãå¨æçBåæ èæ´¾ç¼è¯è¿ç¨è±è´¹äºå°è¿å个å°æ¶ï¼ç¼è¯å®æåæ§è¡çæµè¯å¥ä»¶åè±è´¹äºå·®ä¸å¤ä¸ä¸ªå°æ¶ï¼æ»å ±è±è´¹äºä¸ä¸ªåå°æ¶å·¦å³ã
5ãé ç½®golangè¿è¡ç¯å¢åé
ç¼è¯å®æåï¼goç®å½ä¸ä¼çæbinç®å½ï¼éé¢å°±æ¯goçè¿è¡èæ¬ã为äºä»¥å使ç¨æ¹æ³ï¼å¯ä»¥å°è¿ä¸ªbinè·¯å¾æ·»å å°PATHç¯å¢åéä¸ãåæ ·ç¼è¾~/.bashrcæ件ï¼å 为åé¢è®¾ç½®è¿GOROOTç¯å¢åéæågoç®å½äºï¼æ以åªéè¦å¨æ«å°¾å ä¸
exportPATH=$PATH:$GOROOT/bin
ä¿åååæ ·æ§è¡source~/.bashrcå½ä»¤è®©ç¯å¢åéçæã
è³æ¤ï¼golangæºä»£ç ç¼è¯å®è£ æåãæ§è¡goversionåºè¯¥å°±è½çå°å½ågolangççæ¬ä¿¡æ¯ï¼è¡¨ç¤ºç¼è¯å®è£ æåã
linuxä¸ARMå¹³å°ç¼è¯ç¼åçå®æç¨åºå¦ä½å¨windowsç¯å¢ä¸è¿è¡ï¼
ç´æ¥å¨windowä¸è¿è¡ä¸äºãåªè½å¨windowä¸å®è£ èææºï¼åå®è£ linuxç³»ç»ï¼å¨èææºä¸çlinuxégccç¼è¯ä½ çç¨åº.
armææ¯éè¦å¦ä»ä¹ä¸ä¸ï¼
åå¼å§ï¼1ï¼å¦ä¹ Linuxç³»ç»å®è£ ã常ç¨å½ä»¤ãåºç¨ç¨åºå®è£ ã2ï¼å¦ä¹ Linuxä¸çCç¼ç¨ãè¿æ¬ä¹¦å¿ å¦ãUNIXç¯å¢é«çº§ç¼ç¨ãããUNIXç½ç»ç¼ç¨ãï¼RechardStevensåçï¼Cé«æ大é½å¦ä¹ è¿ãCåæéãããC缺é·ä¸é·é±ãããé«è´¨éC/C++ç¼ç¨æåãããCä¸å®¶ç¼ç¨ãããThe源码CprogrammingLanguageã3ï¼ç¨åºå大é½è¦å¦ï¼æ°æ®ç»æï¼åµå ¥å¼ç¨åºåæ°æ®ç»æå¿ å¦ï¼4ï¼åºå±å¼å人å大é½è¦å¦ï¼å¾®æºåçã计ç®æºä½ç³»ç»æï¼åµå ¥å¼å¼å人åå¿ å¦ï¼5ï¼åçæºå¯ä»¥è®©ä¸ä¸ªä»äºè½¯ä»¶å¼åç人äºè§£åå¦ä½æä½ç¡¬ä»¶ï¼æå¿ è¦å¦ï¼å 为ä¸å¼å§å°±ä»ARMå ¥æï¼ä¸å¤ªç°å®ï¼6ï¼ARMä½ç³»ç»æï¼å ¶ä¸ææ±ç¼ã7ï¼æ°åçµè·¯æå¿ è¦å¦ä¹ ï¼ä¸ç¶ä½ å¨ååºå±å¼åæ¶ççä¼ä¸ç¥éæä¹çåçå¾ï¼èµ·ç ä¹å¾æä¸å ¥é¨å§ã8ï¼ARM+Linuxåºç¨ç¨åºå¼åï¼åææ¯è¦æå¼åæ¿ï¼å°æ¤ï¼å强ç®æ¯å¨åµå ¥å¼Linuxè¿ä¸ªè¡ä¸æäºåæ¥å ¥é¨äºï¼ä½éæ¾çæ¯è¿è¿è¿è¿ä¸å¤ï¼è¿å¾ç»§ç»ï¼å 为è¿ä¸åµå ¥å¼ï¼å¾åæé«æã9ï¼è¦ååºå±å¼åï¼å°±å¿ é¡»ç¥é软硬件ä¹é´æ¯å¦ä½è¡æ¥åé åå·¥ä½çï¼é£ä¹çµåææ¯åºè¯¥è¦å¥½å¥½å¦ä¹ äºï¼å¾å¤æ¶åä¼ç¨å°æ¨¡æçµè·¯ç¥è¯ï¼è¿æ¯åºå«å¥½æä¸èé¸çä¸åä¹å¤ä¹ä¸ãï¼Linuxä¸çæ±ç¼è¦å¦ï¼è¿æ ·ä½ æè½çæ£äºè§£ä½ åçç¨åºæ¯å¦ä½å¨ä¸ä¸ªç¹å®ç硬件ä¸è·çãè¿æ¯åºå«å¥½æä¸èé¸çä¸åä¹å¤ä¹äºãï¼TCP/IPåè®®æ è¦å¦ï¼ææçåµå ¥å¼é«æé½å¾ææ¡çä¸è¥¿ï¼è¿æ¯åºå«å¥½æä¸èé¸çä¸åä¹å¤ä¹ä¸ãï¼æäºè¿äºä¸è¥¿ï¼æ¿ä¸Linux驱å¨å·²ç»ä¸åè¯ä¸ï¼éè¦ä½ å»å¦ä¹ Linuxå æ ¸æºä»£ç åLinux驱å¨ç¨åºè®¾è®¡ï¼è¿æ¯ä¸ä¸ªææ¯ååãå°æ¤ï¼ä½ å·²ç»ç®æ¯åµå ¥å¼Linuxçä¸çº§äººç©äºï¼ç»§ç»å¾ä¸ï¼ï¼é³é¢ãè§é¢ç解ç è¯ç ææ¯ä½ å¾å¦ãï¼åç§ICï¼åç§bootloaderä½ è½å¤åä¸å ¶å¼å设计ãï¼èªè¡è®¾è®¡å¼åæ°äº§åï¼æ°ææ¯ã
armççubuntuå¯ä»¥å®è£ ä»ä¹è½¯ä»¶?å¯ä»¥åxubuntuç软件éç¨åï¼
æ¶æä¸ä¸æ ·ä¸ä¸ªxä¸ä¸ªarmï¼è½¯ä»¶ä¸è½éç¨ï¼ä¸è¿linuxä¸è¬é½æä¾æºä»£ç çï¼ç¨arm-linux-gccç¼è¯ä¸ä¸å°±è½ç¨äº.
ARM & Linux 基础学习 / 配置交叉编译工具链 / 编译 Linux 应用和驱动 / 编译内核
基于 ARM & Linux 的基础学习 本文整理自“ask imx6ull”开发板的相关资料,以及菜鸟教程、源码C语言中文网等资源,源码旨在提炼核心内容,源码方便后续查阅。源码对于基础知识,源码钱多多源码商店本文将不再详述,源码如有错误,源码期待您的源码指正。请记住,源码文章基于IMX6ULL的源码A7内核,配置的源码交叉编译器对应ARMv7 位,对于A内核如i.mx8mm,源码则需使用ARMv8 位的源码工具链。保持清晰的源码学习态度,耐心探索。 获取Linux应用和驱动的编译指南,可以从三个途径入手:开发板供应商提供的SDK工具链、ARM官网下载、中医体质测试源码以及Linaro GCC编译器。具体操作涉及编辑~/.bashrc文件以添加环境变量,并测试编译器版本。 针对IMX6ULL,SDK中的工具链位于/.../ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin。通过添加至.bashrc并激活,验证工具链可用性。在编写和编译驱动程序时,需编写Makefile并确保环境变量设置正确。睿思通源码 编译内核时,需根据特定开发板的配置文件,如arch/arm/configs/目录下的内容进行。首先在Linux源码目录执行配置命令,生成内核文件和设备树文件。对于内核模块的编译,同样在Linux源码目录进行,完成后将模块导入目标板的lib/modules目录。 对于Buildroot构建系统,微砍价源码下载它简化了嵌入式Linux定制过程,自动化构建bootloader、内核和文件系统。通过一系列Makefile命令,可以快速生成适用于不同目标板的嵌入式Linux环境。学习Buildroot,可以参考相关文档。 构建过程可能耗时较长,但通过配置不同的java erp源码下载配置文件,可以定制化地创建不同需求的文件系统。编译成功后,输出的文件需传输到嵌入式板并安装或烧录至SD卡或eMMC中。qemu搭建arm linux kernel环境
搭建ARM Linux内核环境,包含详细步骤如下:
一、环境准备:
使用Ubuntu .系统,并下载最新版Linux内核源码(Linux Kernel Archives)。
安装交叉编译工具链,通过命令行使用`sudo apt-get install gcc--aarch-linux-gnu`或自行下载(开发者网站:developer.arm.com/downloads)。
安装QEMU版本(最新版为`sudo apt-get install qemu-system-arm`)。
二、编译内核:
解压内核源码后,设置`config`文件,使用命令`make ARCH=arm CROSS_COMPILE=aarch-none-linux-gnu- defconfig`进行编译配置。确保`CROSS_COMPILE`前缀与自定义编译工具链名称一致。
执行`make ARCH=arm CROSS_COMPILE=aarch-none-linux-gnu- Image -j8`编译内核,生成kernel image`Image`和用于gdb调试的`vmlinux`文件。
可选步骤:编译内核模块(ko),使用命令`make ARCH=arm CROSS_COMPILE=aarch-none-linux-gnu- modules -j8`。
三、制作根文件系统:
选择便捷的busybox作为根文件系统,下载最新版本(busybox-1..1.tar.bz2)。进行编译配置并安装,根文件系统位于`busybox-1..1.tar.bz2/install/`。
构建ext4 image,合并busybox到img中,为后续实验提供方便。
四、使用QEMU启动内核:
创建启动脚本,包含内核`Image`和根文件系统`rootfs.img`的加载,确保脚本具有执行权限。启动脚本用于QEMU环境,简化实验过程。
完成步骤后,系统搭建完成。此过程记录于操作手册中,方便后续查看与避免重复错误。
å¦ä½å®è£ arm-linux-gcc
arm-linux-gccæ¯åºäºarmæ¶æçlinuxå¹³å°äº¤åç¼è¯å·¥å ·ãå¨å®è£ æ¶ä¸»è¦æ以ä¸å æ¥ï¼æ常è§çé¦å è¦ä¸è½½arm-linux-gccå®è£ å ï¼æè ä¹å¯ä»¥ä»ç½ä¸ä¸è½½arm-linux-gccçæºç ã
è¿å ¥Linuxï¼å°å½åç®å½è®¾ä¸ºarm-linux-gccçä¸è½½ç®å½ï¼å¹¶ä¸è¾å ¥tar -xzf arm-linux-gcc-4.4.3.tar.gz,åæ¶å°æ件解åï¼è§£ååä¼æä¸ä¸ªoptçæ件夹ãå¦ä¸å¾æ示ï¼
å¨/usr/local/ä¸å»ºç«ä¸ä¸ªå为armçæ件夹ï¼åæ¶å¨ç»ç«¯ä¸è¾å ¥å½ä»¤ï¼cd /usr/local/ï¼å¹¶ä¸ç¹å»å车é®ï¼å次è¾å ¥å½ä»¤ï¼mkdir armï¼å»ºç«armç®å½ï¼å¹¶ä¿®æ¹è¯¥æ件夹çå±æ§ä¸ºrwxï¼æåè¾å ¥å½ä»¤ï¼chmod armï¼å¦ä¸å¾ï¼
å¨Linuxç»ç«¯ä¸è¾å ¥å½ä»¤ï¼sudo cp -r /opt/FriendlyARM/toolschain/4.4.3 /usr/local/armï¼åæ¶å°ä¹å解åå¾å°çoptæ件åä¸çæºç ï¼å¤å¶å°ä¸ä¸æ¥ä¸å建çarmæ件夹ä¸
å°è¿éå·²ç»åºæ¬å®è£ å®æä½æ¯è¿è¦æ³¨æ以ä¸äºé¡¹ï¼
为äºé¿å æ¯æ¬¡ä½¿ç¨arm-linux-gccæ¶é½è¦è¾å ¥å®æå¨çå®æ´è·¯å¾ï¼æ以è¦ä¿®æ¹ä¸ä¸ç¯å¢åé$PATHãé常éè¦å¨ç»ç«¯ä¸è¾å ¥:sudo gedit /etc/profileï¼æå¼profileæ件ï¼å¨æåä¸è¡å ä¸âexport PATHï¼$PATH:/usr/local/arm/4.4.3/binâç¶åä¿åæ件ãå¦å¾æ示ï¼
为äºä½¿æ°çç¯å¢åéçæéè¦è¾å ¥ï¼source /etc/profileãç¶ååè¾å ¥ï¼echo $PATHæ¥çç¯å¢åéï¼å¦å¾ï¼
æåè¾å ¥arm-linux-gcc -væ¥ççæ¬ä¿¡æ¯ï¼å¦æåºç°ä¸å¾ä¸çæ¬ä¿¡æ¯å表示å®è£ æåã
å¦ä½å¶ä½arm-linux-gccç¼è¯å·¥å ·
ä¸ãä¸è½½æºæ件
æºä»£ç æ件åå ¶çæ¬ï¼
binutils-2..tar.bz2, gcc-core-4.4.4.tar.bz2 gcc-g++-4.4.4.tar.bz2 Glibc-2.7.tar.bz2 Glibc-ports-2.7.tar.bz2 Gmp-4.2.tar.bz2 mpfr-2.4.0.tar.bz2mpc-1.0.1.tar.gz Linux-2.6..tar.bz2 ï¼ç±äºæå¨ç¼è¯åºéçè¿ç¨ä¸ï¼æ ¹æ®åºéçä¿¡æ¯ä¿®æ¹äºç¸å ³çC代ç ï¼æ è没æä¸è½½ç¸åºçè¡¥ä¸ï¼
ä¸è¬ä¸ä¸ªå®æ´ç交åç¼è¯å¨æ¶åå°å¤ä¸ªè½¯ä»¶ï¼ä¸»è¦å æ¬bilingualsãccãglibcçãå ¶ä¸ï¼binutils主è¦çæä¸äºè¾ å©å·¥å ·ï¼gccæ¯ç¨æ¥çæ交åç¼è¯å¨ï¼ä¸»è¦çæarm-linux-gcc交åç¼è¯å·¥å ·ï¼èglibc主è¦æä¾ç¨æ·ç¨åºæéè¦çä¸äºåºæ¬å½æ°åºã
äºã建ç«å·¥ä½ç®å½
ç¼è¯æç¨ä¸»æºåå· fc.iï¼èææºéçæ¯VM7.0ï¼Linuxåè¡çéçæ¯Fedora9,
第ä¸æ¬¡ç¼è¯æ¶ç¨çæ¯rootç¨æ·ï¼ç¬¬äºæ¬¡ç¨ä¸è¬ç¨æ·yyzï¼, ææçå·¥ä½ç®å½é½å¨/home/yyz/crossä¸é¢å»ºç«å®æï¼é¦å å¨/home/yyzç®å½ä¸å»ºç«crossç®å½ï¼ç¶åè¿å ¥å·¥ä½ç®å½ï¼æ¥çå½åç®å½ãå½ä»¤å¦ä¸ï¼
åå»ºå·¥å ·é¾æ件夹ï¼
[root@localhost cross]# mkdir embedded-toolchains
ä¸é¢å¨æ¤æ件夹ä¸å»ºç«å¦ä¸å 个ç®å½ï¼
setup-dirï¼åæ¾ä¸è½½çå缩å ï¼
src-dirï¼åæ¾binutilsãgccãglibc解åä¹åçæºæ件ï¼
Kernelï¼åæ¾å æ ¸æ件ï¼å¯¹å æ ¸çé ç½®åç¼è¯å·¥ä½ä¹å¨æ¤å®æï¼
build-dir ï¼ç¼è¯src-dirä¸é¢çæºæ件ï¼è¿æ¯GNUæ¨èçæºæ件ç®å½ä¸ç¼è¯ç®å½å离çåæ³ï¼
tool-chainï¼äº¤åç¼è¯å·¥å ·é¾çå®è£ ä½ï¼
programï¼åæ¾ç¼åç¨åºï¼
doc:说æææ¡£åèæ¬æ件ï¼
ä¸é¢å»ºç«ç®å½ï¼å¹¶æ·è´æºæ件ã
[root@localhost cross] #cd embedded- toolchains
[root@localhost embedded- toolchains] #mkdir setup-dir src-dir kernel build-dir tool-chain program doc
[root@localhost embedded- toolchains] #ls
build-dir doc kernel program setup-dir src-dir tool-chain
[root@localhost embedded- toolchains] #cd setup-dir
æ·è´æºæ件ï¼
è¿éæ们éç¨ç´æ¥æ·è´æºæ件çæ¹æ³ï¼é¦å åºè¯¥ä¿®æ¹setup-dirçæé
[root@localhost embedded- toolchains] #chmod setup-dir
ç¶åç´æ¥æ·è´/home/yyzç®å½ä¸çæºæ件å°setup-dirç®å½ä¸ï¼å¦ä¸å¾ï¼
建ç«ç¼è¯ç®å½ï¼
[root@localhost setup-dir] #cd ../build-dir
[root@localhost build -dir] #mkdir build-binutils build-gcc build-glibc
ä¸ãè¾åºç¯å¢åé
è¾åºå¦ä¸çç¯å¢åéæ¹ä¾¿æ们ç¼è¯ã
为ç®åæä½è¿ç¨ãä¸é¢å°±å»ºç«shellå½ä»¤èæ¬environment-variablesï¼
[root@localhost build -dir] #cd ../doc
[root@localhost doc] #mkdir scripts
[root@localhost doc] #cd scripts
ç¨ç¼è¾å¨viç¼è¾ç¯å¢åéèæ¬envionment-variablesï¼[root@localhost scripts]
#vi envionment-variables
export PRJROOT=/home/yyz/cross/embedded-toolchains
export TARGET=arm-linux
export PREFIX=$PRJROOT/tool-chain
export TARGET_PREFIX=$PREFIX/$TARGET
export PATH=$PREFIX/bin:$PATH
æªå¾å¦ä¸ï¼
æ§è¡å¦ä¸è¯å¥ä½¿ç¯å¢åéçæï¼
[root@localhost scripts]# source ./environment-variables
åã建ç«äºè¿å¶å·¥å ·ï¼binutilsï¼
ä¸é¢å°åæ¥ä»ç»å®è£ binutils-2..1çè¿ç¨ã
[root@localhost script] # cd $PRJROOT/src-dir
[root@localhost src-dir] # tar jxvf ../setup-dir/binutils-2..1.tar.bz2
[root@localhost src-dir] # cd $PRJROOT/build-dir/build-binutils
å建Makefileï¼
[root@localhost build-binutils] #../../src-dir/binutils-2..1/configure --target=$TARGET --prefix=$PREFIX
å¨build-binutilsç®å½ä¸é¢çæMakefileæ件ï¼ç¶åæ§è¡makeï¼make install,æ¤è¿ç¨æ¯è¾ç¼æ ¢ï¼å¤§çº¦éè¦ä¸ä¸ªåéå·¦å³ãå®æåå¯ä»¥å¨$PREFIX/binä¸é¢çå°æ们çæ°çbinutilã
è¾å ¥å¦ä¸å½ä»¤
[root@localhost build-binutils]#ls $PREFIX/bin