【整理】Ubuntu 16.04[64bit]交叉编译环境搭建过程图解

合集下载

(7条消息)ubuntu16.04 安装交叉编译工具aarch64

(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.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交叉编译工具链的搭建

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开发环境

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交叉编译环境

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位系统上安装交叉编译工具出现错误的解决方法

关于在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位程序三步曲

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位程序三步曲,希望对⼤家有所帮助,如果⼤家有任何疑问请给我留⾔,⼩编会及时回复⼤家的。

在此也⾮常感谢⼤家对⽹站的⽀持!
如果你觉得本⽂对你有帮助,欢迎转载,烦请注明出处,谢谢!。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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。

相关文档
最新文档