【整理】Ubuntu 16.04[64bit]交叉编译环境搭建过程图解
(7条消息)ubuntu16.04 安装交叉编译工具aarch64

(7条消息)ubuntu16.04 安装交叉编译工具aarch64前言最近需要把人脸识别代码放到RK3399Pro的嵌入式板子上,所以编写好的c++ 代码要放到板子上编译,或者在ubuntu系统上使用交叉编译工具,编译好可执行文件在放到板子里运行。
为了在能在ubuntu系统上能交叉编译,安装aarch64-linux-gnu-gcc/g++交叉编译工具链。
介绍The GNU Compiler Collection - cross compiler for ARM64 target. aarch64-linux-gnu-gcc/g++ 是一个交叉编译工具链,可以在其他架构的系统中,编译安装64 位arm 架构的程序。
常用在嵌入式代码的移植中。
aarch64-linux-gnu-gcc/g++ 是由非盈利组织Linaro 基于 GCC/G++ 推出的 ARM 交叉编译工具。
可用于交叉编译ARMv8 64 位目标中的裸机程序、u-boot、Linux kernel、filesystem 和 App 应用程序。
aarch64-linux-gnu-gcc/g++ 交叉编译器必须安装在 64 位主机上,才能编译目标代码。
安装# 查看可以安装的版本apt-cache search aarch64# 选择可以安装的版本进行安装# 此处选择gcc-5-aarch64-linux-gnu以及g++-5-aarch64-linux-gnu进行安装sudo apt-get install gcc-5-aarch64-linux-gnusudo apt-get install gcc-5-aarch64-linux-gnu# 安装依赖sudo apt --fix-broken install# 安装一个没有版本号的gcc和g++sudo apt-get install gcc-aarch64-linux-gnusudo apt-get install gcc-aarch64-linux-gnu# 查看版本aarch64-linux-gnu-g++ -vaarch64-linux-gnu-gcc -v测试c++文件交叉编译1.test.cpp文件/** test.cpp* for cplusplus* test aarch64-linux-gnu-g++*/# include<iostream>int main(int argc,char **argv){std::cout << "hello world!" <<std::endl;return 0;}2.交叉编译# 生成可执行文件test命令cd test # 切换到test 目录下aarch64-linux-gnu-g++ test_arm.cpp -o test # 将生成的可执行文件放到嵌入式板子上运行./test # 若显示hello world!表示成功。
ubuntu16.04-交叉编译opencv3.4.6

ubuntu16.04-交叉编译opencv3.4.60、前⾔在要移植opecv和SeetaFaceEngine-master到ARM板⼦上运⾏的所有步骤之前,有⼏点需要注意的:查看板⼦运⾏的Kernel版本交叉编译⼯具链的gcc版本,关键就是⼯具链⾥库所能⽀持的最低内核版本可以⽤file xxx,查看(xxx是可执⾏程序,你可以随意编写⼀个简单helloworld来编译后,测试)⼯具链的版本会影响到opecv、seetaface的编译⼯程,以及编译出来的opecv库、seetaface最终的可执⾏⽂件能否在板⼦的内核⾥跑起来⽂件系统系统⾥的lib库最好⽤与上⾯提到的同⼀个⼯具链⾥的库下⾯操作不要在共享⽂件夹⽬录中进⾏,在Ubuntu其他原⽣⽬录中进⾏下篇交叉编译seetafaceengine-master:1、前提准备Linux操作系统:Ubuntu 16.04OpenCv版本:3.4.6交叉⼯具链:arm-2014.05-29-arm-none-linux-gnueabi-,gcc version 4.8.3⽬标平台:ARM板⼦:study210,kernel:2.6.35SoC :S5PV210编译时间:2020/3/302、下载安装opencv官⽹下载opencv(Source版本)下载交叉编译⼯具链arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bz下载链接:安装⼯具链解压:tar -xvjf arm-2014.05-29-arm-none-linux-gnueabi-i686-pc-linux-gnu.tar.bzvim /etc/profile在末尾添加⼯具链路径进环境变量PATHexport PATH=xxxxx:$PATH同步⽣效⼀下:source /etc/profile说明:编译⼯具:xxx/arm-2014.05/bin/arm-none-linux-gnueabi-gcc、xxx/xxx/arm-2014.05/bin/arm-none-linux-gnueabi-g++板⼦根⽂件系统需要的交叉编译库:arm-2014.05/arm-none-linux-gnueabi/libc/lib/安装cmakeapt-get install cmake(当然除了这种⽅式,还可以下载cmake压缩包来解压安装)cmake --version查看版本,尽量安装3.1以上的版本,我的是3.5.1安装cmake-qt-guisudo apt-get install cmake-qt-gui利⽤cmake-gui命令进⼊cmake的gui界⾯进⾏⼀些配置,例如交叉编译⼯具链的配置安装依赖库:sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff4.dev libswscale-dev libjasper-dev3、在opencv源码⽬录中创建⼀个⽂件夹,⽤于放置编译输出的⽂件,以免污染opencv源码⽬录mkdir build4、命令⾏输⼊:cmake-gui,进⼊界⾯设置 说明:Where is the source code对应opencv的⽂件夹,Where to build the binaries对应opencv存放编译好的配置⽂件等信息的⽂件夹(刚才创建的build⽂件夹) 选择第四项,交叉编译: 注意:Linux要⼤写⾸字母,不能写成linux。
Ubuntu16.04下的2009q3交叉编译工具链的搭建

Ubuntu16.04下的2009q3交叉编译⼯具链的搭建
环境搭建:
1.下载arm-2009q3.tar.bz2源码。
密码: rbui
2.将arm-2009q3.tar.bz2拷贝到/usr/local/arm(没有该⽬录就新建⼀个)⽬录下,执⾏命令tar jxvf arm-2009q3.tar.bz2 进⾏解压。
3.为了能在别的路径下运⾏需要修改环境变量
执⾏命令vim ~/.bashrc (若提⽰权限不够,在命令前加上sudo即可) 在⽂件末尾加上export PATH=/usr/local/arm/arm-
2009q3/bin:$PATH(注意路进正确性,如果此路径运⾏后不⾏的话可以尝试export PATH=/usr/arm/arm-2009q3/bin:$PATH)
执⾏命令source ~/.bashrc
到此路径已修改完成
4.安装32位库
因为ia32-libs数据库的问题需安装32位库 依次执⾏下列命令即可
sudo dpkg --add-architecture i386
sudo apt -get update
sudo apt-get dist-upgrade
到此Ubuntu16下的2009q3交叉编译⼯具链的搭建已完成,执⾏命令arm-none-linux-gnueabi-gcc -v 检查⼯具的链是否搭建成功。
By Sw Young。
交叉编译和交叉调试环境搭建及使用

交叉编译和交叉调试环境搭建及使⽤交叉编译和交叉调试环境搭建及使⽤1. 交叉编译器1.1 交叉编译器介绍在⼀种计算机环境中运⾏的编译程序,能编译出在另外⼀种环境下运⾏的代码,我们就称这种编译器⽀持交叉编译。
这个编译过程就叫交叉编译。
简单地说,就是在⼀个平台上⽣成另⼀个平台上的可执⾏代码,⽽这种⼯具就是交叉编译器(cross compiler)。
1.2 搭建交叉编译环境1.2.1 实验环境交叉编译⼯具:arm-linux- 4.2.2编译平台:ubuntu10.10开发板类型:UT-S3C64101.2.2 搭建步骤1) 在/usr/local/下建⽴交叉编译器的安装⽬录arm:sudo mkdir /usr/local/arm2)将下载的交叉编译器包解压到/usr/local/arm⽬录下:sudo tar jxvf cross-4.2.2-eabi.tar.bz2 -C /usr/local/arm/3)解压成功后,修改PATH环境变量:sudo vim /etc/profile在⽂件为加⼊交叉编译器arm-linux-所在的路径:export PATH=$PATH:/usr/local/arm/4.2.2-eabi/usr/bin然后退出vim。
4) 更新⼀下配置⽂件/etc/profile:source /etc/profile5)检测是否安装成功:现在就可以使⽤交叉编译器了,写⼀个测试程序helloworld,交叉编译下,看是否能在开发板上运⾏。
i. 交叉编译测试程序arm-linux-gcc helloworld.c -o helloworldii.把⽣成的可执⾏⽂件helloworld复制到NFS的挂载⽬录下:sudo cp ./helloworld /nfsboot注意:本实验中开发板使⽤NFS挂载rootfs,nfsboot是NFS的挂载⽬录。
iii.在超级终端上运⾏:./helloworld执⾏结果:2. 交叉调试GDB的介绍和使⽤2.1 GDB是什么?GDB(GNU symbolic debugger) 简单的说是UNIX和LINUX下的⼀个调试⼯具。
ubuntu16.04搭建RTT开发环境

ubuntu16.04搭建RTT开发环境本⽂主要讲述ubunt16.04系统搭建RTT开发stm32f107芯⽚:RTT下载路径:RTT版本:v3.1.31. 下载安装交叉编译⼯具链 下载gcc-arm-none-eabi交叉编译⼯具链,直接使⽤apt install gcc-arm-none-eabi进⾏安装,默认安装⽬录应该在 /usr/bin/arm-none-eabi-gcc-xxx, (xxx代表当前版本号)2. 修改编译⼯具 将RTT_EXEC_PATH 添加到环境变量:在/home/sean/.profile ⽂件末尾添加 export RTT_EXEC_PATH =/usr/bin/arm-none-eabi-gcc-4.9.3 ,保存然后重启系统; 或者按如下操作: 编辑stm32f10x-HAL⾥的⽂件rtconfig.py 修改 CROSS_TOOL 为 gcc 修改编译器路径EXEC_PATH EXEC_PATH = '/usr/bin/arm-none-eabi-gcc-4.9.3'3. 下载RT-Thread编译⼯具(linux环境下构建⼯程⼀般有makeflie 和 scons 等⼏种机制,RT-Thread采⽤scons构建项⽬⼯程,编译直接使⽤scons命令即可,相当于make指令) 该系统使⽤scons编译,使⽤apt install scons进⾏安装4. 在 home/sean/work⽬录下新建rtthread⽬录,将下载的源码拷贝到 rtthread ⽬录;5.为了⽅便在系统的任意地⽅进⾏rtthread的开发,需要设置部分环境变量: 将 RTT_ROOT 加⼊到环境变量:在/home/sean/.profile ⽂件末尾添加 export RTT_ROOT=$HOME/work/rtthread/ ,保存然后重启系统; 如不将RTT_ROOT加⼊到环境变量,则需要再bsp⽬录下的stm32⽂件夹下创建新的板级⽀持包,然后使⽤ scons --dist 命令,使⽤此命令会在 BSP ⽬录下⽣成 dist ⽬录,这便是开发项⽬的⽬录结构,包含了RT-Thread源码及BSP相关⼯程,不相关的BSP⽂件夹及libcpu 都会被移除,并且可以随意拷贝此⼯程到任何⽬录下使⽤。
ubuntu下搭建MIPS交叉编译环境

ubuntu下搭建MIPS交叉编译环境 由于要在本地编译程序,在嵌⼊式系统上运⾏,因此需要在本地装编译器,⽬前主要需要mipsel-linux-gcc。
之前⼀直以为可以⽤apt-get install找到,结果找了好久找不到,发现还是得⾃⼰编。
主要是参考上⾯的那个链接,然后这对⾃⼰需求改了改配置。
1. 环境系统:Ubuntu 16.04软件: buildroot该软件可以编译⽤于 mips, arm等等的C编译器。
2. 下载tar -jxvfcd buildroot3. 配置buildroot (重要)make cleanmake menuconfig会出现选择菜单,如下图:选择第⼀项“Target Architecture”, 改成 MIPS (little endian)另外,选择“Toolchain”, 将"kernel headers"改成⾃⼰主机上的Linux版本(及运⾏改编译器的主机)可以在主机上通过 uname -r 或者 cat /proc/version查看。
原⽣的是只有gcc部分,没有g++部分,需要对编译C++程序,则在菜单⾥选择 Enable c++选项(按 y 选取)。
⽤于编译python的配置选项我主要⽤这个来编译python放在嵌⼊式设备系统上⽤,最开始就按照上⾯的选项,编译⼀般的程序没问题,编译python会出现:unknow type name 'wchar_t' 错误,这个需要在这⾥的⼯具⾥选⼏个选项;a1. 在配置⾥选择对wchar的⽀持;a2. 退出Target options,进⼊Target packages,在Target packages⾥再添加⼏个选项(这⾥我没看不配置这个会出什么问题,这个⾥⾯到底做什么的,我直接按照进⼊Interpreter lanaguages and scripting 选项,选择python选项,然后吧core python modules⾥的都选了吧~(编译⼀次太费时了,缺个什么⼜得重新编译这个⼯具链)配置完了后,保存,并退出。
关于在ubuntu16.0464位系统上安装交叉编译工具出现错误的解决方法

关于在ubuntu16.0464位系统上安装交叉编译工具出现错误的解决方法https:///hanshengfei/article/details/78702436 utm_source=app一.安装交叉编译工具详细的安装过程请移步我的另外一个帖子:/hanshengfei/article/details/78669298 二。
安装之后执行命令 arm-linux-gcc -v出现找不到编译工具原因是交叉编译工具是32 位的但是咱们的系统是64位的这就需要下载安装一下32位的兼容库,但是ubuntu16.04已经不支持ia32-libs的软件包,而是使用了lib32ncurses5 和lib32z1软件包做替换,所以我们应该在ubuntu16.04版本中执行:(安装的时候最好先执行一下 sudo get-apt update 更新一下软件包,否则可能会出现Unable to locate package的错误)sudo apt-get install lib32ncurses5sudo apt-get install lib32z1安装完之后再执行一下命令 arm-linux-gcc -v 就可以了三.安装完之后写个小程序来测试一下vi hello.c1.#include <stdio.h>2.int main()3.{4.printf("hello linux!!\n");5.reurn 06.}保存编译:arm-linux-gcc -o hello hello.c这个时候出现:这是说找不到这个库那么安装一下这个库:sudo apt-get install lib32stdc++6安装之后再执行命令 arm-linux-gcc -o hello hello.c出现可执行文件。
ubuntu16.0464位兼容32位程序三步曲

ubuntu16.0464位兼容32位程序三步曲
第⼀步:确认⾃⼰系统的架构
dpkg --print-architecture
输出:
amd64
结果为 amd64 表⽰系统是64位的
第⼆步:确认打开了多架构⽀持功能
dpkg --print-foreign-architectures
输出:
i386
如果这⾥没有输出i386,则需要打开多架构⽀持
sudo dpkg --add-architecture i386
sudo apt-get update
第三步:安装对应的32位的库
sudo apt-get dist-upgrade ( #这⼀步是更新所有的软件,如果你对新版本软件的需求不是那么迫切,可以不执⾏)
或者只安装相关库
sudo apt-get install lib32z1 lib32ncurses5 (有的还需要32位stdc++库 lib32stdc++6-4.8-dbg)
安装gcc multilab
sudo apt-get install gcc-multilib g++-multilib
总结
以上所述是⼩编给⼤家介绍的ubuntu 16.04 64位兼容32位程序三步曲,希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。
在此也⾮常感谢⼤家对⽹站的⽀持!
如果你觉得本⽂对你有帮助,欢迎转载,烦请注明出处,谢谢!。
记ubuntu的uClinux交叉编译环境的搭建以及操作系统的引导

添加如图所示的代码。
最后,需要这两个程序自动启动的话还需要修改 “~/uClinux-dist/Vendors/Samsung/4510B/"下的 rc 文件,向其最后添加 “./bin/led& ./bin/uart&" 两行代码。 完成这些以后,我们就可以开始编译了
在“Target Platform Selection"中选择“Customize Kernel Settings (NEW)“和”Customize Vendor/User Settings (NEW)“
#define UTXBUF1 (* (volatile unsigned *) 0x03ffe00c) \\定义 UART1 发送缓存寄存器
#define URXBUF1 (* (volatile unsigned *) 0x03ffe010) \\定义 UART1 接收缓存寄存器
#define UBRDIV1 (* (volatile unsigned *) 0x03ffe014) \\定义 UART1 波特率分频寄存
void InitUART(int Port,int Baudrate) \\串口初始化函数体 { if(Port==0) { ULCON0=0x03; UCON0=0x09; UBRDIV0=Baudrate; } if(Port==1) { ULCON1=0x03; UCON1=0x09; UBRDIV1=Baudrate; } }
这次我选择了用 Ubuntu 这个版本的 linux 作为我的开发环境,是因为它的界面还算友好, 对于我这种 linux 白痴一样的人能少用一点命令那是再好不过了的。可是我没有想到 Ubuntu 可以这样的坑爹,由于用的 shell 和别个的 linux 不同,所以直接导致 arm-elf-tools-20030314.sh 不能打开,所以更别说安装了。Google 了很久,终于不得不去 面对了一个现实,就是我偷懒不想用命令,结果我得用更多的命令去安装这个该死的工具。
ubuntu交叉编译用法

ubuntu交叉编译用法Ubuntu是一个流行的Linux操作系统,拥有广泛的开发工具和软件包。
交叉编译是指将程序从一种操作系统和处理器架构编译成另一种系统和架构可运行的程序。
在本文中,我们将介绍如何在Ubuntu上进行交叉编译。
准备工作在Ubuntu上进行交叉编译需要安装交叉编译工具链。
工具链是一组编译器、链接器、库和其他辅助工具,它们可以将源代码转换为目标平台的可执行文件。
通常,交叉编译工具链包括以下组件:1. 交叉编译器2. 库3. 头文件4. 静态链接器5. 动态链接器在ubuntu上,你可以通过命令行安装交叉编译工具链:```shellsudo apt install gcc-arm-linux-gnueabi```该命令将安装一个名为gcc-arm-linux-gnueabi的工具链,它可以用来将C和C++代码编译成ARM架构上的可执行文件。
其他的交叉编译工具链也可以通过类似的方式安装。
交叉编译的过程编写交叉编译工具链的Makefile文件时,通常需要指定交叉编译工具链的路径和一些其他配置选项。
以下是一个简单的Makefile文件示例:all: $(TARGET)$(TARGET): $(SRC)$(CC) -o $@ $<clean:rm -f $(TARGET)```在此Makefile文件中,我们指定交叉编译器的名称为arm-linux-gnueabi-gcc,它将从Ubuntu上的工具链中获取。
我们还指定了目标的名称和源代码文件的名称。
最后,我们指定了如何编译代码和如何清除生成的文件。
要编译代码,只需打开终端并在命令行中输入以下命令:```make```该命令将使用交叉编译工具链将源代码编译为ARM架构上的二进制文件。
如果你要在不同的ARM架构上运行代码,可能需要使用不同的交叉编译工具链。
例如,如果你要在Raspberry Pi上运行代码,你需要使用不同的工具链。
交叉编译具有许多好处。
Ubuntu16.04多个版本GCC编译器的安装和切换

Ubuntu16.04多个版本GCC编译器的安装和切换这⼏天在配置交叉编译ARM开发板的linux内核的过程中碰到了很多问题,其中包括了GCC版本太⾼等问题,由此我打算安装其他⽼的版本给我的Ubuntu16.04.实验过程如下:1、⾸先查看⼀下当前我的Ubuntu16.04版本的原装GCC版本:gcc -v #查看gcc的版本g++ -v #查看g++的版本如上图所⽰:GCC的版本是5.4.0(这对我编译某些很早的内核⽂件的确是太新了)2、安装⽬前需要GCC和G++的版本(⽬前安装的是gcc-4.8.5版本):在这之前,我尝试采⽤下载源⽂件编译安装的⽅法,碰到了太多的问题,先记录于此,后⾯再解决吧,先使⽤apt-get的安装⽅法:sudo apt-get install gcc-4.8 g++-4.8我已经安装好了,显⽰如图。
你在安装完之后可以采⽤下⾯的指令来查看当前系统中安装的所有的gcc和g++的版本:ls /usr/bin/gcc*ls /usr/bin/g++*3、将某个版本加⼊gcc候选中,最后的数字是优先级,我⾃⼰是直接设为100(测试没有问题),指令如下:sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8100同样的我们也将原来系统中的gcc和g++的优先级改成100,这样我们就能在选择完当前使⽤版本之后不会恢复默认优先级的版本。
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-51004、完成上⾯的操作之后,我们就可以通过下⾯的指令来选择不同的gcc和g++的版本了,(注意使⽤之前确保⾄少有两个gcc或者g++的版本进⾏了第3步的操作):sudo update-alternatives --config gcc这⾥我们选择了2,也就是gcc-4.8的版本,接下来查看当前的版本是否已经切换过来了。
【整理】Ubuntu 16.04[64bit]交叉编译环境搭建过程图解
![【整理】Ubuntu 16.04[64bit]交叉编译环境搭建过程图解](https://img.taocdn.com/s3/m/12b1041d90c69ec3d5bb7520.png)
开发裸机环境之前需要先搭建其开发环境,毕竟工欲善其事必先利其器嘛。
安装步骤1、准备工具安装目录将压缩包arm-Linux-gcc-4.4.3.tar.gz存放在一个目录下,这个目录就是你等会解压缩的目录,以后这个目录就不能随便删掉了,我的存放路径是/home/aldrich/arm,如下图,记住这个路径,等会还会用到。
1. .tar.gz 和.tgz2. 解压:tar zxvf FileName.tar.gz3. 压缩:tar zcvf FileName.tar.gz DirName2、安装软件使用tar命令:tar zxvf arm-linux-gcc-4.3.2.tgz将software文件夹下的arm-linux-gcc-4.3.2.tgz解压缩安装到当前目录。
通过下图可以看到解压成功了,并且解压后的文件存放在了1. /home/aldrich/arm/arm-linux-gcc-4.3.2文件夹下,如下图所示,这个存放路径可得记住,如下图3、配置系统环境变量配置环境前先坐下普及:Ubuntu不同目录下profile与bashrc的区别/etc/profile此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行,并从/etc/profile.d目录的配置文件中搜集shell的设置。
/etc/bash.bashrc为每一个运行bash shell的用户执行此文件,当bash shell被打开时,该文件被读取。
~/.bash_profile每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次,默认情况下,他设置一些环境变量,执行用户的.bashrc文件。
~/.bashrc该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取。
~/.bash_logout当每次退出系统(退出bash shell)时,执行该文件。
在Microzed上构建嵌入式linux系统(ubuntu16.04下)

在Microzed上构建嵌入式linux系统(ubuntu16.04下)我们要生成四个文件:Linux启动需要4个文件:1. boot.bin2. device_tree.dtb3. uImage4. uramdisk.image.gza1.生成boot.bin文件需要:(生成boot.bin时,下面三个文件顺序不能错。
)(1)FSBL:第一级启动引导程序,选择Zynq FSBL模版,生成zynq_fsbl_0.elf(2)system.bit:硬件比特流(硬件工程文件,有的命名为zynq_system_wrapper.bit)(3)u-boot:u-boot.elf。
Linux Bootloader。
u-boot是用于多种嵌入式CPU的bootloader程序。
体系结构:api,arch (u-boot支持的cpu架构,子目录arm使我们用到的),board(和已有开发板相关文件),common(u-boot命令行下支持的命令),disk,doc,drivers(u-boot支持的设备驱动程序),fs(支持的文件系统),include(头文件,对各种硬件平台支持的汇编文件,系统的配置文件和对文件系统支持的文件。
configs/zynq_common.h是我们开发板相关的文件),lib(与体系结构相关的库文件),net,tools(生成u-boot的工具,例如,mkimage,crc等,还包括Makefile和boards.cfg)启动过程参考:a2.device_tree.dtbdevicetree.dtb:Linux系统设备树文件,通过u-boot加载到内存。
在运行时,构建系统硬件的设备树信息传递给内核,进行系统的启动运行。
作为u-boot和Linux内核之间的动态接口。
设备树的引入,减少内核对系统硬件的严重依赖,提高代码重用。
并且加速了Linux 支持包的开发。
这样,使得单个内核镜像能支持多个系统,通过降低硬件所带来的需求变化和成本,降低对内核设计和编译的要求。
交叉开发环境搭建(交叉编译器安装)

课堂实验5 交叉开发环境搭建-交叉编译器安装【实验目的】掌握交叉编译器安装方法。
【实验要求】完成交叉编译器的安装及使用。
【实验预习】1 交叉编译器介绍在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码,我们就称这种编译器支持交叉编译。
这个编译过程就叫交叉编译。
简单地说,就是在一个平台上生成另一个平台上的可执行代码,而这种工具就是交叉编译器(cross compiler)。
2 搭建交叉编译环境(1)实验环境交叉编译工具:arm-linux- 3.4.6编译平台:Redhat Enterprise 4(2)安装arm-linux-gcc交叉编译器的方法a 获得交叉编译器包,例如arm-linux-gcc-3.4.1.tar.bz2(里面有arm-linux-gcc命令)。
b 解压后修改环境变量配置文件/etc/profile,添加上arm-linux-gcc命令的路径。
c执行source /etc/profile使新配置生效。
(3)环境变量配置文件说明/etc/profile,/etc/bashrc 是系统全局环境变量设定文件。
~/.bashrc,~/.bashrc用户目录下的私有环境变量设定文件(~是root目录)。
如想将一个路径加入到环境变量$PATH中(以便在任何目录下都可以访问到该路径中的命令),可以像下面这样做:方法1. 控制台中:使用export命令增加环境变量:例如:# export PA TH=$PA TH:/usr/local/arm/2.95.3/bin例如:# PATH="$PA TH:/my_new_path" (关闭shell,会还原PATH)方法2. 修改profile文件:# vi /etc/profile在里面加入:export PATH="$PATH:/my_new_path"方法3. 修改~/.bashrc文件:#vi /root/.bashrc在里面加入:export PATH="$PATH:/my_new_path"后两种方法一般需要重新注销系统才能生效,最后可以通过echo命令测试一下:# echo $PATH输出已经是新路径了。
在ubuntu16.04上编译安卓5.1的过程

sudo apt-get install tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386 sudo apt-get install dpkg-dev libsdl1.2-dev libesd0-dev sudo apt-get install git-core gnupg flex bison gperf build-essential sudo apt-get install zip curl zlib1g-dev gcc-multilib g++-multilib sudo apt-get install libc6-dev-i386 sudo apt-get install lib32ncurses5-dev x11proto-core-dev libx11-dev sudo apt-get install lib32z-dev ccache sudo apt-get install libgl1-mesa-dev libxml2-utils xsltproc unzip m4 注:Ubuntu 版本不同,依赖的软件也不一样。
sudo add-apt-repository ppa:ubuntu-toolchain-r/test sudo apt-get update sudo apt-get install gcc-4.7 g++-4.7 g++-4.7-multilib gcc-4.7-multilib
2)Ubuntu16.04 环境下,推荐安装 make-3.8 版本
2)设置 JDK 环境变量
sudo gedit /etc/profile 在文件末尾加上: Export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64/ Export JRE_HOME=${JAVA_HOME}/jre Export CLASSPATH=.:${JAVA_HOME}/lib:{JRE_HOME}/lib Export PATH=${JAVA_HOME}/bin:$PATH 修改了/etc/profile 文件需要重启才能生效
虚拟机安装ubuntu16.04详细步骤

虚拟机安装ubuntu16.04详细步骤* 下载* 安装步骤1. 新建⼀个虚拟机,选择⾃定义(⾼级),然后点击下⼀步2. 点击下⼀步3. 选择稍后安装操作系统,然后点击下⼀步4. 客户机操作系统选择 Linux,版本 Ubuntu 64位(因为下载的是64位的系统,如果是 32位的,选择 Ubuntu)5. 输⼊虚拟机名称和安装位置,然后点击下⼀步6. 配置处理器,由于我电脑配置原因我选择分配给虚拟机 2 个处理器,这个按照个⼈电脑配置选择就⾏7. 为虚拟机分配内存,由于我电脑配置原因我选择分配给虚拟机 2GB内存,这个按照个⼈电脑配置选择就⾏8. ⽹络类型连接⽅式选择使⽤桥接⽹络,然后点击下⼀步9. 默认选择,然后点击下⼀步10. 默认选择,然后点击下⼀步11. 默认选择,然后点击下⼀步12. 为虚拟机分配磁盘⼤⼩,按照个⼈电脑配置选择,然后选择将虚拟磁盘存储为单个⽂件,然后点击下⼀步13. 默认选择即可,然后点击下⼀步14. 这⾥点击⾃定义硬件按钮15. 点击新CD/DVD,在右边的连接部分选择使⽤ ISO 映像⽂件,点击浏览按钮选择安装的操作系统,然后点击关闭退出配置界⾯然后点击14中的完成16. 点击开启此虚拟机17. 开始安装 Ubuntu ,语⾔选择中⽂(简体),然后点击安装Ubuntu18. 默认选择,点击继续19. 默认选择,点击现在安装20. 点击继续21. 时区输⼊ Shanhai,然后点击继续22. 默认选择,然后点击继续23. 输⼊你的⽤户信息,然后点击继续24. 虚拟机开始安装 Ubuntu ,耐⼼等待........25. 点击现在重启重启Ubuntu注意:重启的时候需要关掉安装盘,可能需要重新两次安装vmtools 可以参考这⾥ ()。
Ubuntu下搭建MIPS交叉编译环境(zz)

Ubuntu下搭建MIPS交叉编译环境MIPS是一个RISC的处理器体系结构,与之类似的还有x86,arm等,今天我们介绍如何在Ubuntu下搭建MIPS交叉编译环境:1.下载:在/downloads/snapshots/buildroot-snapshot .tar.bz2下载buildroot:tar -jxvf buildroot-snapshot.tar.bz2cd buildroot2.配置buildroot:make cleanmake menuconfig会出现和编译Linux类似的菜单选择界面,如下图:选择第一项“Target Architecture”,改成MIPS(little endian),如下图:另外,选择“Toolchain”,务必将“Kernel Headers”的Linux版本改成你自己主机的Linux版本(因为我们编译出的MIPS交叉工具是需要在我们的主机上运行的),如下图,我的主机是Ubuntu 11.04的,Linux 版本是2.6.38-8:3.编译:注意:1.编译过程中必须联网,因为会下载一些压缩包存放在buildroot/dl文件夹下,比如binutils、gcc等!如下图:2.必须事先安装好bison、flex、texinfo、ncurses等,比如我第一次编译,出现如下错误,因为我没有安装texinfo:sudo apt-get install texinfo就可以了:之后就是漫长的等待了,差不多1个小时。
4.编译完成后,在buildroot文件夹下多了一个output文件夹,其中就是编译好的文件:cd buildroot/output/host/usr/bin我们发现了mips的交叉编译工具已经生成啦~~:5.另外,在buildroot/output/target文件夹下,我们发现这就是我们之前选择的Linux 2.6.36-8版的busybox!如下图:我们用file命令查看其中的某个可执行文件,如下:我们看到,生成的文件确实是MIPS平台的,在我的x86下是无法运行的。
Qt移植:Ubuntu16.04交叉编译qt5.9.6详细教程

Qt移植:Ubuntu16.04交叉编译qt5.9.6详细教程博主是嵌⼊式⼩萌新,项⽬需要移植qt到arm开发板上,历经千⾟万苦解决了各种问题,最后终于成功了,所以整理了开发笔记给更多的⼩伙伴参考。
1.准备阶段④安装虚拟机VMware® Workstation 14 Pro和Ubuntu16.04.5 LTS,博主的虚拟机版本如下图:⑤将⽂件分别存放在相应⽂件夹下并解压:****.tar.gz ⽂件的解压命令是:tar -zxvf ****.tar.gz****.tar.xz ⽂件的解压命令是:tar xvJf ****.tar.xz第⼀步的准备⼯作已完成。
2. 安装交叉编译器:交叉编译器解压之后的路径为:/home/admin/Qt_Env/Cross-compiler/①查看当前环境变量命令:echo $PATH②在/etc/profile中添加新的环境变量:执⾏命令:gedit /etc/profile在⽂件末尾添加:export PATH=$PATH:/home/admin/Qt_Env/Cross-compiler/aarch64-linux-gnu/bin执⾏命令:source /etc/profile③再次执⾏echo $PATH可以看到环境变量已经添加上了。
④验证编译器是否安装成功执⾏命令:aarch64-linux-gnu-g++ -v终端显⽰编译器信息如下:编译器安装成功。
注意:在/etc/profile中改变的环境变量是临时的,重启虚拟机或重启终端会导致环境变量修改不⽣效,所以在编译qt之前⼀定要确定交叉编译器安装成功,如果执⾏④打印的是gcc的版本信息,那么可能是编译器3.交叉编译qt5.9.6①配置qt的configure在⽬录/home/Qt_Env/Qt_opensource下创建 qt_compiler_conf.sh⽂件,⽂件是configure的配置项,关于配置项的说明资料很多,在此不在赘述。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
开发裸机环境之前需要先搭建其开发环境,毕竟工欲善其事必先利其器嘛。
安装步骤
1、准备工具安装目录
将压缩包arm-Linux-gcc-4.4.3.tar.gz存放在一个目录下,这个目录就是你等会解压缩的目录,以后这个目录就不能随便删掉了,我的存放路径是/home/aldrich/arm,如下图,记住这个路径,等会还会用到。
1. .tar.gz 和.tgz
2. 解压:tar zxvf FileName.tar.gz
3. 压缩:tar zcvf FileName.tar.gz DirName
2、安装软件
使用tar命令:tar zxvf arm-linux-gcc-4.3.2.tgz将software文件夹下的arm-linux-gcc-4.3.2.tgz解压缩安装到当前目录。
通过下图可以看到解压成功了,并且解压后的文件存放在了
1. /home/aldrich/arm/arm-linux-gcc-4.3.2
文件夹下,如下图所示,这个存放路径可得记住,如下图
3、配置系统环境变量
配置环境前先坐下普及:
Ubuntu不同目录下profile与bashrc的区别
/etc/profile此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行,并从/etc/profile.d目录的配置文件中搜集shell的设置。
/etc/bash.bashrc为每一个运行bash shell的用户执行此文件,当bash shell被打开时,该文件被读取。
~/.bash_profile每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次,默认情况下,他设置一些环境变量,执行用户的.bashrc文件。
~/.bashrc该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取。
~/.bash_logout当每次退出系统(退出bash shell)时,执行该文件。
另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是"父子"关系。
~/.bash_profile是交互式、login 方式进入bash 运行的。
~/.bashrc是交互式non-login 方式进入bash 运行的。
通常二者设置大致相同,所以通常前者会调用后者。
登陆系统时shell读取的顺序应该是
/etc/profile ->/etc/enviroment -->$HOME/.profile -->$HOME/.env
原因应该是jtw所说的用户环境和系统环境的区别了
如果同一个变量在用户环境(/etc/profile)和系统环境(/etc/environment)有不同的值那应该是以用户环境为准了
接下来配置系统环境变量,把交叉编译工具链的路径添加到环境变量PATH中去,这样就可以在任何目录下使用这些工具。
记下上一步中的安装路径,使用命令:vim /home/aldrich/.bashrc 编辑.bashrc文件,添加环境变量。
在该文件中最后一行添加:
1. export PATH=$PATH:/home/aldrich/arm/arm-linux-gcc-4.3.2/bin
这个路径就是那个bin目录所在的路径,可能你的不一样,按照你实际的目录填就可以了,如下图
编写完保存就好了
4、使环境变量生效
使用命令:source /home/aldrich/.bashrc 使环境变量生效
5、检查环境变量是否设置成功
在终端上输入命令arm-linux 再按Tab键,可以看到下图,说明环境变量设置成功了
6、安装32位库兼容包
输入命令后,出现下面的错误提示信息:
1. /home/aldrich/arm/arm-linux-gcc-4.3.2/bin/arm-linux-gcc:
2. line 3:
3. /home/aldrich/arm/arm-linux-gcc-
4.3.2/bin/arm-none-linux-gnueabi-gcc:No such file or directory
说是出现这种问题的原因是由于Ubuntu16.04用的是64位的,按以前的解决方法就是使用命令:
sudo apt-get install ia32-libs 装一些32位的库
出现上述界面是因为Ubuntu16.04版本已不支持ia32-libs的软件包,而是使用了lib32ncurses5、lib32z1软件包做为替代,所以在Ubuntu16.04版本当中应该安装执行:
1. sudo apt-get install lib32ncurses5 lib32z1
待安装完32位的库之后,再使用命令:arm-linux-gcc -v,这一次就成功了,如下图
8、交叉编译工具验证
编译一个hello.c文件
1. #include<stdio.h>
2. int main()
3. {
4. printf("hello world!\n");
5. }
使用命令:arm-linux-gcc hello.c -o hello 看是否编译成功
可见成功生成了二进制文件,至此,交叉编译工具就配置完成了。
如出现错误,则按照下面的处理安装lib32stdc++6
cc1: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
hg@hg-ubuntu64:~/Design$ sudo apt-get install lib32stdc++6
如果使用命令:arm-linux-gcc test1.c -o test1
运行./test1
出现如下错误:
bash: ./test1: cannot execute binary file: 可执行文件格式错误
是因为arm-linux-gcc-4.4.3是32位编译器,编译生成了32位可执行程序,因为针对的是32位的ARM,所以在64位ubuntu 下不能正常运行
如要在64位下运行普通程序,则需在使用g++编译器(可能需要root权限)编译:
root@hg-ubuntu64:/home/hg/Design# g++ -o test1 test1.c
参见韦东山linux应用开发完全手册
二、安装其他
1.安装工具bison、flex,它们分别是语法、词发分析器:
sudo apt-get install bison flex
2.安装C库函数的man手册,可以通过man funxxx 命令查看函数用法:
sudo apt-get install manpages-dev。