ubuntu下linux 开发环境的搭建以及arm平台的移植
- 格式:doc
- 大小:373.50 KB
- 文档页数:6
在Ubuntu上建立Arm Linux 开发环境来源:未知作者:电子电路【大中小】我使用的是友善2410的板子,以前都是用Fedora,现在家里的电脑被我转为Linux专用的了,装的是Ubuntu。
但是嵌入式还是要玩的,在装载过程中也遇到一些小麻烦。
在此记录一下,一来自己比较健忘,二来也希望能给一些没弄过的人一点启示。
目的:把ARM linux的交叉开发环境,kernel, filesystem, bootloder安装,并配置,使其可以编译bootloder, kernel, 可以nfs更新文件系统;资源:arm-linux-toolchains.tgzmatrix5-kernel-v5.5.tgzvivi.tar.gzJflash.tgzroot-for-nfs-v5.5.tgz规划:交叉编译器装在:/usr/local/kernel, bootloder放在: /home/volans/arm/用于启动的nfs文件系统放在:/home/armnfs/准备工作:sudo mkdir /home/armnfssudo chmod 777 /home/armnfsmkdir ~/arm上面前两句的目的是在/home下建立armnfs目录,为了开发的方便,把这个目录设成所有用户可rwx。
然后把上面提到的资源全部拷贝到~/arm/下。
安装配置:安装标准的C开发环境,由于Ubuntu安装默认是不安装的,所以需要先安装一下:sudo apt-get install gcc g++ libgcc1 libg++ make gdb安装交叉编译器cd /sudo tar zxvf /home/volans/arm/arm-linux-toolchains.tgz请在执行完成后查看是否存在/usr/local/arm文件夹。
把交叉编译器的路径加入到PATH,以方便使用:sudo vi /etc/bash_bashrc在后面加入如下代码:if [ -d /usr/local/arm ] ; thenPATH=/usr/local/arm/2.95.3/bin:"${PATH}"fi解压bootloader, kernel和flash烧写工具Jflashcd ~/armtar zxvf matrix5-kernel-v5.5.tgztar zxvf vivi.tar.gztar zxvf Jflash.tgz解压用于启动的NFS文件系统cd /home/armnfstar zxvf /home/volans/root-for-nfs-v5.5.tgz启动NFS服务请参照我前几篇文章,关于启动NFS服务器的相关内容。
linux ubuntu X86和ARM平台QT安装步骤Linux ubuntu 平台:3种方式1、直接安装:sudo apt-get install libqt4-dev qtcreator(最好)2、源代码安装,一般不用3、sdk安装:下载sdk:sudo apt-get install libglib2.0-dev libSM-dev libxrender-dev libfontconfig1-dev libxext-devARM平台:1、安装交叉工具链,能够使用arm-linux-gnu-gcc命令编译如4.1.1版本的:mkdir /opt/crosstooltar -jxvf 路径/4.1.1_softfloat_withlib.tar.bz2 -C /opt/crosstool //将编译工具解压到crosstool中。
配置环境变量,当用arm-linux-gnu-gcc 编译程序时能够找得到此文件所在的目录例:vim /home/farsight/.bashrc在末尾添加:export PATH=$PATH:/opt/crosstool/4.1.1/bin2、看 4.1.1/arm-linux-gnu/lib下是否有zlib,libjpeg,libpng,freetype库文件如果没有,安装:以zlib为例:从下载源码tar -jxvf xxx/zlib-1.2.5.tar.bz2cd zlib-1.2.5CC=arm-linux-gnu-gcc AR=arm-linux-gnu-ar RANLIB=arm-linux-gnu-ranlib LD=arm-linux-gnu-ld ./configure --prefix=/opt/crosstool/4.1.1/arm-linux-gnumakemake install其他的网址是:安装步骤和上面一样3、Qt默认的ARM交叉编译器是:arm-linux-开头的,但是系统开始安装的是arm-linux-gnu开头的,所以要改qt源码:例:vim qt-everywhere-opensource-src-4.6.3/mkspecs/qws/linux-arm-g++/qmake.conf在arm-linux-后加个gnu,例:arm-linux-gnu-gcc...4、qt配置细微配置:编译qconfig,用qconfig执行相应的文件cd qt-everywhere-opensource-src-4.6.3/tools/qconfigqmakemakesudo cp qconfig /usr/bincd qt-everywhere-opensource-src-4.6.3/src/corelib/global qconfig qfeatures.txt...粗配置:使用./configure --help5、安装文件。
ARM交叉编译环境搭建装好ubuntu系统后,搭建编译环境(所有命令均不输前面的“#”)1、将交叉编译环境安装包EABI-4.3.3_EmbedSky_20100610.tar.bz2复制到某个目录下,然后进行解压安装解压安装包的命令如下:#tar xvfj EABI-4.3.3_EmbedSky_20100610.tar.bz2 -C 目录2、进入profile文件#gedit /etc/profile3、在最后一行添加环境变量export PATH=$PATH:/../../../bin4、重启ubuntu5、查看环境变量的命令如下:#echo $PATH6、查看交叉编译环境版本:#arm-none-linux-gnueabi-gcc-4.3.3 -v,出现版本号则表示搭建成功。
编写简单C程序并运行1、打开打算存储程序的文件:#cd /kumust2、文件里新建路径: #touch hello.c3、手动在目录kumst里找到hello.c并打开编写程序并保存#include “stdio.h”main(){printf("hello,ubuntu!");}4、编译命令(pc上):#gcc hello.c -o helloarm上编译命令:#arm-linux-gcc hello.c -o hello5、执行文件(pc上执行)#./hello,出现hello,ubuntu!6、把ubuntu里的hello文件拷贝到优盘里7.插上优盘启动TQ2440,在终端里输入 cd /udisk ./hello TQ2440显示屏显示hello,ubuntu!至此说明linux在TQ2440移植成功!。
Ubuntu18.04安装arm-linux-gcc交叉编译器的两种⽅法(附下载地址)⽅法⼀: 我们都知道Ubuntu有⼀个专门⽤来安装软件的⼯具apt,我们可以⽤它来全⾃动安装arm-linux-gcc。
此⽅法安装的是最新版的,但是此⽅法需要FQ,否则99%会失败,这就是为什么⽹上⼤多都⽤压缩包安装的原因: ⾸先Ctrl+Alt+T弹出终端,使⽤如下命令进⾏arm-linux-gcc的安装:sudo apt-get install gcc-arm-linux-gnueabihf 使⽤如下命令进⾏arm-linux-g++的安装:sudo apt-get install g++-arm-linux-gnueabihf 如果要卸载时使⽤如下命令进⾏移除,arm-linux-gcc的卸载:sudo apt-get remove gcc-arm-linux-gnueabihf arm-linux-g++的卸载:sudo apt-get remove g++-arm-linux-gnueabihfsudo tar -xjvf /tmp/arm-linux-gcc-3.4.5-glibc-2.3.6.tar.bz2 3.解压完成后,再在(/usr/local)中创建⼀个新⽬录arm,即在Terminal中输⼊以下命令:sudo mkdir /usr/local/arm 4.创建arm⽬录成功后,还需要给它解放全部权限,即在Terminal中输⼊以下命令:sudo chmod 777 /usr/local/arm 5.在解压出来的⽬录中找到并把整个arm-linux-gcc-3.4.5-glibc-2.3.6⽬录复制到刚刚建好的arm⽬录中,命令如下:sudo cp -r gcc-3.4.5-glibc-2.3.6 /usr/local/arm 6.打开(/etc/profile)配置环境变量和库变量,⽬的是以后可以在任何位置使⽤该交叉编译器,命令如下:sudo vi /etc/profile 7.⽤vi或者vim打开后,在⽂件最后添加两⾏,并输⼊以下代码:第⼀⾏是添加执⾏程序的环境变量,第⼆⾏是库⽂件的路径export PATH=$PATH:/usr/local/arm/gcc-3.4.5-glibc-2.3.6/binexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/arm/gcc-3.4.5-glibc-2.3.6/lib 8.使⽤source命令重新加载⽣效该配置⽂件source /etc/profile 9.检验是否安装成功,在 Terminal 输⼊以下命令输出版本信息:arm-linux-gcc -v 10.若有以下报错参考解决办法: 报错:bash: /usr/local/arm/4.2.2-eabi/usr/bin/arm-linux-gcc-4.2.2: No such file or directory 解决sudo apt-get install libc6-i386 该库中包括ia32-libs, lib32z1, lib32ncurses5等等依赖。
ubuntu宿主机构建LINUX嵌入式开发环境步骤实验平台:ubuntu11.041、安装tftpa 安装相关软件包:Ubuntu tftp(服务端),tftp(客户端),xinetd:sudo apt-get install tftp tftpd xinetd或者sudo apt-get install tftp-hpa tftpd-hpa xinetd(推荐)LINUX下有两个tftp版本,tftp、tftpd和tftp-hpa、tftpd-hpa,两者有什么区别我还没有具体研究,但是在ubuntu11.04下,tftp、tftpd这个版本我安装后虽然启动了,但是有问题,具体表现在当应有put和get时会显示time out类似的提示,这是tftp没有启动时才发生的,但是实际上tftp是启动了的。
后来改为安装tftp-hpa、tfptd-hpa才没有这个问题。
b建立配置文件在/etc/xinetd.d/下建立一个配置文件tftpsudo vi /etc/xinetd.d/tftp在文件中输入以下内容:service tftp{socket_type = dgramprotocol = udpwait = yesuser = rootserver = /usr/sbin/in.tftpdserver_args = -c -s /tftpbootdisable = noper_source = 11cps = 100 2flags = IPv4}保存退出c建立Ubuntu tftp服务文件目录(上传文件与下载文件的位置),并且更改其权限sudo mkdir /tftpboot (这个文件夹可以随便设在哪里都可以,只是路径和xinetd.d/tftp里的server_args项一样,如果这里改变的话那里也要对应改变)sudo chmod 777 /tftpboot -Rd重新启动服务sudo /etc/init.d/xinetd restart (service xinetd restart)sudo in.tftpd -l /tftpboot至此Ubuntu tftp服务已经安装完成了。
ARM架构安装ubuntu系统⼀、简介arm开发板制作系统是⽐较⿇烦,不论使⽤busybox还是yocto制作根⽂件系统对新⼿都⽐太友好,除⾮深度定制,否则使⽤ubuntu系统既可以满⾜,把更多的精⼒放在应⽤开发上。
⼆、准备材料我使⽤的芯⽚是RK3288,⼩伙伴可以根据⾃⼰的情况选择开发版。
开发环境:VMware操作系统:ubuntu开发版:RK3288三、ubuntu的下载与配置1. 下载ubuntu系统ubuntu官⽹根⽂件系统下载地址 ,根据需要下载⾃⼰所需的版本,我使⽤的是ubuntu20.04.2。
打开链接后选择ubuntu-base → releases →版本号→ release → ubuntu-base-20.04.1-base-armhf.tar.gz 下载完成后将ubuntu-base-20.04.1-base-armhf.tar.gz拷贝到ubuntu下,并解压。
mkdir ubuntu20.04.2sudo tar zxf ubuntu-base-20.04.1-base-armhf.tar.gz -C ubuntu20.04.22. 安装qemu-user-static⼯具安装完成后拷贝“/usr/bin/qemu-arm-static”到刚刚解压⽂件的“/usr/bin”路径下。
sudo apt-get install qemu-user-staticsudo cp /usr/bin/qemu-arm-static ubuntu20.04.2/usr/bin/3. ⽹络配置我在上⼀篇⽂章中,介绍在ubuntu20.04.2/etc/apt/sources.list⽂件中更改ubuntu的软件源,不知道为啥这次配置后反⽽下载不了,所以这⾥我就没有配置,各位⼩伙伴视情况⽽定。
为了制作成功的根⽂件系统能够联⽹,可以直接拷贝本机的dns配置⽂件到根⽂件系统的相应位置。
sudo cp /etc/resolv.conf ubuntu20.04.2/etc/resolv.conf4. 使⽤chroot⼯具挂载⽂件系统挂载成功后会进⼊到我们下来的系统中,注意⾥⾯的操作都是对我们挂载的系统进⾏操作的,⽆法在对开发系统进⾏操作,除⾮使⽤exit命令退出。
ubifs的制作,移植的重点详解PC操作系统:ubuntu 11.10使用的开发板:am335x_evm开发板使用的操作系统:linux 3.2使用的 NAND FLASH的型号:MT29F2G08ABAEAWP在制作 ubifs 文件系统的过程中需要如下:为方便操作,把下面将要安装的数据包的解压文件到存放在:/home/user/mtd再mkdir install,下面将要运行的数据包生成的文件将会存放在:/home/user/mtd/install1),正确安装数据包:zlib-1.2.5;lzo-2.06;e2fsprogs-1.42,mtd-utils-1.5.0这些数据包的版本最好如上所述,否则可能会导致无法生成所需的文件或生成的文件不正确这是制作 ubifs 过程中将要用到的所有的软件包的连接:ubifs1,zlibhost$ tar xvf zlib-1.2.5.tar.gzhost$ cd zlib-1.2.5/host$ ./configure --prefix=/home/user/mtd/install打开其根目录下的 Makefile,替换 gcc, ldshared, cpp, ar , ranlib 为如下:host$ gedit MakefileCC=arm-arago-linux-gnueabi-gccLDSHARED=arm-arago-linux-gnueabi-gcc -shared -Wl,-soname,libz.so.1,--version-script,zlib.mapCPP=arm-arago-linux-gnueabi-gcc -EAR=arm-arago-linux-gnueabi-ar rcRANLIB=arm-arago-linux-gnueabi-ranlib保存,退出host$ makehost$ make installhost$ cd ..生成的 zlib.a 存放在 /home/user/mtd/install/lib 中;生成的 zlib 的头文件存放在 /home/user/mtd/install/include 中。
Linux开发环境的搭建1.arm交叉编译链的安装2.NFS服务器的安装3.tftp服务器的安装4.触摸屏驱动库的安装编译5.编译安装qt-everywhere-opensource-src-4.8.1需要的文件及库:1.arm-2009q1-203-arm-none-linux-gnueabi2.fs.tar.gz3.tslib-1.44.qt-everywhere-opensource-src-4.8.11.arm交叉编译链的安装见附录6:arm-2009q1-203-arm-none-linux-gnueabi安装测试交叉编译器是否安装成功,执行如下命令:HOST $ arm-none-linux-gnueabi-gcc -v如果显示编译器的版本信息说明安装成功。
2.NFS服务器的安装见附录7:安装完成后,在/home/wws/目录下执行如下指令:sudo gedit nfs.shnfs.sh的内容如下:HOST $ sudo /etc/init.d/portmap restartHOST $ sudo /etc/init.d/nfs-kernel-server restart保存后执行source nfs.sh以后只要在主目录下执行上述source命令就可以重启nfs服务器测试 NFS 服务器是否安装成功,执行如下命令:HOST $ showmount -e若显示 /home/wws/wws_nfs*则说明安装成功。
3.tftp服务器的安装具体安装过程见附录8:安装完成后,执行:sudo gedit tftp.sh其内容如下:HOST $ sudo /etc/init.d/xinetd restartHOST $ sudo /etc/init.d/tftpd-hpa restart保存在主目录下,当开发板找不到链接,出现T T T T.......等时,无需重启系统,只需执行source tftp.sh重启tftp服务器即可,或者直接执行上述两条指令来重启服务器。
4.触摸屏驱动库的安装编译Tslib是一个开源的程序,能够为触摸屏驱动获得的采样提供诸如滤波、去抖、校准等功能,通常作为触摸屏驱动的适配层,为上层的应用提供了一个统一的接口。
在采用触摸屏的移动终端中,触摸屏性能的调试是个重要问题之一,因为电磁噪声的缘故,触摸屏容易存在点击不准确、有抖动等问题。
安装触摸屏驱动库tslib-1.4新建文件夹my_qt,在该文件夹下进行解压解压wws@ubuntu:~/my_qt/tslib1.4$ tar -zxvf tslib-1.4.tar.gz进入目录wws@ubuntu:~/my_qt$ cd tslib-1.4wws@ubuntu:~/my_qt/tslib1.4$配置wws@ubuntu:~/my_qt/tslib1.4$ ./autogen.sh若出现如下错误./autogen.sh: line 4: autoreconf: command not found解决办法:sudo apt-get install autoconf automake libtool指定安装目录wws@ubuntu:~/my_qt/tslib1.4$./configure --prefix=/usr/local/Trolltech/tslib-1.4 --host=arm-none-linux-gnueabi ac_cv_func_malloc_0_nonnull=yes(提示:在这个配置中/usr/local/ Trolltech/tslib-1.4就是我们指定的安装路径,也就是执行make install后,tslib就被安装到这个目录了)编译安装wws@ubuntu:~/my_qt/tslib1.4$ make20120726 Q:若报错提示/usr/include/bits/fcntl2.h:51: error: call to ‘__open_missing_mode’ declared with attribute error: open with O_CREAT in second argument needs 3 arguments In function ‘open’,A:因为gcc-4.3.3对语法检查严格的结果,需要添加一个参数,即在tslib1.4/tests/ts_calibrate.c 中227行与229行,open函数中添加第三个参数0777,如下图wws@ubuntu:~/my_qt/tslib1.4$ sudo make install进过上述操作,就可以在/usr/local/qte-arm/tslib-1.4目录下看到相关的应用程序、共享库、配置文件等,这些库和配置文件都是要拷到文件系统的usr/lib 里面的。
编译成功后在目标位置产生/bin、/etc、/include、/lib 4个文件夹至此在PC机上的tslib环境已经安装完成。
5.编译安装qt-everywhere-opensource-src-4.8.1在文件夹my_qt 下解压文件wws@ubuntu:~/my_qt$ tar -zxvf qt-everywhere-opensource-src-4.8.1.tar.gz进入目录wws@ubuntu:~/my_qt$ cd qt-everywhere-opensource-src-4.8.1配置-prefix:预设安装目录动态库:./configure -prefix /usr/local/Trolltech/QtEmbedded-4.8.1-arm-nostatic -opensource -no-qt3support -no-xmlpatterns -no-multimedia -no-phonon -no-phonon-backend -no-svg -no-webkit -no-javascript-jit -no-scripttools -declarative -declarative-debug -qt-mouse-tslib -DQT_QWS_CLIENTBLIT -xplatform qws/linux-arm-g++ -embedded arm -confirm-license静态:(目前用静态库)./configure -prefix /usr/local/Trolltech/QtEmbedded-4.8.1-arm-static -opensource -no-qt3support -no-xmlpatterns -no-multimedia -no-phonon -no-phonon-backend -no-svg -no-webkit -no-javascript-jit -no-scripttools -declarative -declarative-debug -qt-mouse-tslib -static -DQT_QWS_CLIENTBLIT -xplatform qws/linux-arm-g++ -embedded arm -confirm-license静态(arm-none-linux-gnueabi-gcc编译链)./configure -prefix /usr/local/Trolltech/QtEmbedded-4.8.1-arm-gnueabi-static -opensource -no-qt3support -no-xmlpatterns -no-multimedia -no-phonon -no-phonon-backend -no-svg -no-webkit -no-javascript-jit -no-scripttools -declarative -declarative-debug -qt-mouse-tslib -static -DQT_QWS_CLIENTBLIT -xplatformqws/linux-arm-g++ -embedded arm -confirm-license静态:(目前用arm-arago-linux-gnueabi编译链)./configure -prefix /usr/local/Trolltech/QtEmbedded-4.8.1-arm-static -opensource -no-qt3support -no-xmlpatterns -no-multimedia -no-phonon -no-phonon-backend -no-svg -no-webkit -no-javascript-jit -no-scripttools -declarative -declarative-debug -qt-mouse-tslib -static -DQT_QWS_CLIENTBLIT -xplatform qws/linux-arm-g++ -embedded arm -confirm-license20120726 Q:若出现报错如下修改qt-everywhere-opensource-src-4.8.1/mkspecs/qws/linux-arm-g++/qmake.conf如下20120727 Q:若提示如下/home/wws/CodeSourcery/Sourcery_G++_Lite/bin/../lib/gcc/arm-none-linux-gnueabi/4.3.3/../../../../arm-none-linux-gnueabi/bin/ld:warning:libts-0.0.so.0,neededby /home/giant/my_qt/qt-everywhere-opensource-src-4.8.1/lib/libQtGui.so, not found (try using -rpath or -rpath-link)/home/wws/my_qt/qt-everywhere-opensource-src-4.8.1/lib/libQtGui.so: undefined reference to `ts_read_raw'/home/wws/my_qt/qt-everywhere-opensource-src-4.8.1/lib/libQtGui.so: undefined reference to `ts_open'/home/wws/my_qt/qt-everywhere-opensource-src-4.8.1/lib/libQtGui.so: undefined reference to `ts_fd'/home/wws/my_qt/qt-everywhere-opensource-src-4.8.1/lib/libQtGui.so: undefined reference to `ts_config'/home/wws/my_qt/qt-everywhere-opensource-src-4.8.1/lib/libQtGui.so: undefined reference to `ts_close'/home/wws/my_qt/qt-everywhere-opensource-src-4.8.1/lib/libQtGui.so: undefined reference to `ts_read'A:修改qt-everywhere-opensource-src-4.8.1/mkspecs/qws/linux-arm-g++/qmake.conf/usr/local/Trolltech/tslib-1.4/include/usr/local/Trolltech/tslib-1.4/lib最后两句是tslib的安装路径,如果设置不对则生成的库文件没办法支持触摸屏然后执行 make再执行 sudo make install编译成功之后,配置环境变量为了方便以后的开发,因此编写一个导入环境变量的脚本。