树莓linux交叉编译
树莓派交叉编译
- 什么是交叉编译?
- 为什么要交叉编译?
- 交叉编译要用到什么工具?
- ubuntu交叉编译工具的安装、配置
- 如何编译?
- 带wiringPi库的交叉编译如何进行?
- 引入软、硬链接
- 软链接使用方式
- 硬链接使用方式
- 在ubuntu带库wiringPi编译
什么是交叉编译?
两种编译:
本地编译:在x86平台编译的可执行文件,仅在x86平台使用
交叉编译:是一个平台上生成另一个平台上的可执行代码
为什么要交叉编译?
宿主机:编辑和编译的平台,通常指x86平台
目标机:非x86平台,运行宿主机编译的代码
因为平台上的不允许或不能够安装我们需要的编译器
(1)目的平台上的资源匮乏(内存太小),许多硬件被设计成低成本、低功耗,无法运行我们需要的编译器(如C51)
(2)即使目标机有编译器,但是如果不进行交叉编译,编译的同样代码仅仅自己(和同平台)能跑,放在其它平台可能跑不了(移植性不好)
交叉编译就可以很好地解决这些问题
交叉编译要用到什么工具?
交叉编译工具链
ubuntu交叉编译工具的安装、配置
(1)下载交叉编译工具链:https://github.com/raspberrypi/
(2)从共享文件夹拷贝到当前目录(根据自己的实际需求):
cp /mnt/hgfs/share/tools-master.zip .
或者用客户端传输软件传到linux环境:例如FileZilla官网下载地址:https://www.filezilla.cn/
(3)解压
unzip tools-master.zip
(4)配置环境变量
bin目录下存放指令相关的文件
1、先进入解压后的tools-master的bin目录
cd /home/hhz/CrossCompilationTool/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin
2、pwd获知当前路径信息
3、echo $PATH获知当前环境变量的值
4、export PATH=echo $PATH获知当前环境变量的值
5、打开新的命令窗口(方便操作)
修改工作目录下的vi /home/hhz/.bashrc
配置命令终端的隐藏文件
在最后一行加入如下:
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/hhz/CrossCompilationTool/tools-master/arm-bcm2708/gcc-linaro-arm-linux-gnueabihf-raspbian-x64/bin
//5、配置文件马上生效:source /home/hhz/.bashrc
(5)检查交叉编译工具:arm-linux-gnueabihf-gcc -v
看有没有相关信息,如4.8.3版本的
如何编译?
编译跟gcc(cc)类似:arm-linux-gnueabihf-gcc xxx.c -o xxx
查看文件的信息用file:file xxx
带wiringPi库的交叉编译如何进行?
引入软、硬链接
软链接:
(1) 软链接文件类似于Windows的快捷方式
(2)在选定的位置上生成源文件的镜像,不会占用磁盘空间
(3)在符号连接中,文件实际是一个文本文件,其中包含的有另一文件的位置信息
硬链接:在选定的位置上生成一个与源文件大小相同的文件
软链接使用方式
如果主机上没有wiringPi库(没找到下载途径或下载之后用不了),将树莓派的wiringPi库拿来用
第一步
在树莓派进入cd /usr/lib
用 scp指令 文件(夹)名 用户名@IP地址:目录位置
scp wiringPi.so.2.50 hhz@172.20.10.6:/home/hhz/CrossCompilationTool/
第二步
在ubuntu /home/hhz/CrossCompilationTool/目录下
指令 参数 要被链接的文件 指定生成的文件名
ln -s libwiringPi.so.2.50 libwiringPi.so
硬链接使用方式
无参数:ln libwiringPi.so.2.50 libwiringPi.so
在ubuntu带库wiringPi编译
arm-linux-gnueabihf-gcc +.c文件+ -I指定头文件路径+ -L 指定库路径+ -l链库+ -o 生成指定文件
arm-linux-gnueabihf-gcc test.c -I /home/hhz/CrossCompilationTool/wiringPi -L /home/hhz/CrossCompilationTool/ -lwiringPi -o crossTest
-I:(大写的i)指定路径找头文件
-L:指定路径找库
./:当前路径下
-l:(小写的L)链接库,例如线程的-lphread、ncurses图形化界面库的-lcurses
树莓linux交叉编译相关推荐
- Linux 交叉编译简介
Linux 交叉编译简介 主机,目标,交叉编译器 主机与目标 编译器是将源代码转换为可执行代码的程序.像所有程序一样,编译器运行在特定类型的计算机上,输出的新程序也运行在特定类型的计算机上. 运行编译 ...
- Arm Linux 交叉编译(交叉编译是什么?CROSS_COMPILE)(交叉编译工具链【待更】)
文章目录 交叉编译 1.编译 2.本地编译 3.交叉编译 交叉编译工具链 交叉编译 在嵌入式系统开发中,经常会听到一个词:交叉编译.到底什么是"交叉编译"呢?为什么要使用" ...
- linux top交叉编译_Linux 系统下ARM Linux交叉编译环境crosstool工具
Linux系统下ARM Linux交叉编译环境的建立目前流行的有三种途径. 一.使用别人编译好的开发工具链本文引用地址:http://www.eepw.com.cn/article/201611/31 ...
- linux top交叉编译_ARM Linux交叉编译工具链的制作
本次是在VMWare虚拟机里安装了CentOS5.2操作系统,并在上面编译自己的ARM交叉编译工具链,下面是相应的步骤: 首先下载crosstool0.43源码包(crosstool-0.43.tar ...
- linux 交叉编译 libxml2,openssl,libssh2
版本: libxml2-2.9.1 openssl-1.0.1e libssh2-1.4.3 linux下的开源软件的编译比较统一,一般分为如下几步 ./configure;make;make ins ...
- 【Android NDK 开发】NDK 交叉编译 ( NDK 函数库目录 | Linux 交叉编译环境搭建 | 指定头文件目录 | 指定函数库目录 | 编译 Android 命令行可执行文件 )
文章目录 I . NDK platforms 目录下的 函数库 II . Ubuntu 配置 NDK 交叉编译环境 III . 同时指定编译的头文件和库文件 IV . 指定编译的头文件 V . 指定编 ...
- Linux交叉编译问题strace解决 signalfd.c:15: xlat/sfd_flags.h:17: error: size of array 'type name' is negative
产品不是很稳定,执行shell容易出现段错误,为了定位打算移植strace到嵌入式板子上,环境是MIPS平台,从github上下载的strace源码,编译ARM平台通过( ubuntu 12.04 交 ...
- vs linux 交叉编译,VS结合VisualGDB搭建OpenWrt交叉编译远程调试开发环境
由于此开发环境涉及3设备协同工作,因此先说明一下整体开发环境的配置以及每部分所负责的功能: 1.Windows PC 这里我用的是64位Win7,作为VS的安装环境Windows自然是必不可少的,本机 ...
- linux 交叉编译 静态库,从Linux为Windows开发交叉编译静态库
我想在Linux中为Windows编译静态库.以下是我跟着编译从Linux为Windows开发交叉编译静态库 使用i586-mingw32msvc-cc -c static_lib.c -o stat ...
最新文章
- matlab 设计 18db,基于混沌理论的微弱MPSK信号解调方案设计
- Dotnet core使用JWT认证授权最佳实践(二)
- ASP.NET MVC + ADO.NET EF 项目实战(二):设计过程与设计工具
- linux的重要文件,Linux中重要文件夹介绍
- eclipse建java项目不见_秒建一个后台管理系统?用这5个开源免费的Java项目就够了...
- 写Java代码分别使堆溢出,栈溢出
- 冰点还原精灵如何安装
- Win11如何设置默认浏览器 win11设置默认浏览器的步骤方法
- 2015第二届上海国际机上内饰与翻新展览会
- android: Apostrophe not preceded by \ 错误
- QT设置应用程序图标设置
- 网络划分之IP地址计算器
- [AV1] interpolation
- intellij idea 设置代理 代理下载
- win10开机一直转圈圈进不去系统怎么办
- Greenplum实战-gpstop gpstart集群命令
- webstorm js中文乱码
- [分享]PHP多城市版-房产系统源码,仿贝壳房产。
- piwik.php是什么,Piwik是什么?Piwik有哪些优点?
- 很好用的chrome 插件合集,不要错过
热门文章
- 惠普创始人之一 戴维·帕卡德
- Reloaded(重启)
- 可以监测西门子1500/1200PLC数据的小软件
- 解决Win7中无法使用扫描仪的功能问题
- JAVA计算机毕业设计在线党建学习平台Mybatis+源码+数据库+lw文档+系统+调试部署
- 面向对象改造——50道100以内的加减法口算习题
- python动画精灵_如何使用Adafruit的CircuitPython创建动画精灵
- 适配Dell R750xs server Broadcom BCM57412 NetXtreme-E 10Gb SFP+ 网卡
- 批判和质疑,要坚守自我
- 工作汇报PPT模板制作,这些要点要留意