欢迎来到【atv 源码】【网页模板 html源码】【svn如何上传源码】Arm lunix源码-皮皮网网站!!!

皮皮网

【atv 源码】【网页模板 html源码】【svn如何上传源码】Arm lunix源码-皮皮网 扫描左侧二维码访问本站手机端

【atv 源码】【网页模板 html源码】【svn如何上传源码】Arm lunix源码

2024-12-24 09:40:40 来源:{typename type="name"/} 分类:{typename type="name"/}

1.linux运行arm程序armlinux程序
2.ARM & Linux 基础学习 / 配置交叉编译工具链 / 编译 Linux 应用和驱动 / 编译内核
3.qemu搭建arm64 linux kernel环境
4.如何安装arm-linux-gcc
5.如何制作arm-linux-gcc编译工具

Arm lunix源码

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语言中文网等资源,源码旨在提炼核心内容,源码方便后续查阅。源码对于基础知识,源码atv 源码本文将不再详述,源码如有错误,源码期待您的源码指正。请记住,源码文章基于IMX6ULL的源码A7内核,配置的源码交叉编译器对应ARMv7 位,对于A内核如i.mx8mm,源码则需使用ARMv8 位的源码工具链。保持清晰的源码学习态度,耐心探索。

       获取Linux应用和驱动的编译指南,可以从三个途径入手:开发板供应商提供的SDK工具链、ARM官网下载、网页模板 html源码以及Linaro GCC编译器。具体操作涉及编辑~/.bashrc文件以添加环境变量,并测试编译器版本。

       针对IMX6ULL,SDK中的工具链位于/.../ask_imx6ull-sdk/ToolChain/arm-buildroot-linux-gnueabihf_sdk-buildroot/bin。通过添加至.bashrc并激活,验证工具链可用性。在编写和编译驱动程序时,需编写Makefile并确保环境变量设置正确。svn如何上传源码

       编译内核时,需根据特定开发板的配置文件,如arch/arm/configs/目录下的内容进行。首先在Linux源码目录执行配置命令,生成内核文件和设备树文件。对于内核模块的编译,同样在Linux源码目录进行,完成后将模块导入目标板的lib/modules目录。

       对于Buildroot构建系统,放射源码它简化了嵌入式Linux定制过程,自动化构建bootloader、内核和文件系统。通过一系列Makefile命令,可以快速生成适用于不同目标板的嵌入式Linux环境。学习Buildroot,可以参考相关文档。

       构建过程可能耗时较长,但通过配置不同的快言社区源码配置文件,可以定制化地创建不同需求的文件系统。编译成功后,输出的文件需传输到嵌入式板并安装或烧录至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