交叉编译链环境注意事项以及总结

关于移植

移植三要素:

1 源码

2 交叉工具链

3 配置

下面一一说一下。

源码,请在移植前多google其资料,重点说一下,重点用google,不要baidu,保证你省40%的时间,了解其应用以及相关技术(这个很重要啊,因为有时你需要额外安装很多依赖的库,这个过程最好是大量而快速,不要迷恋其中任何技术细节)。

下载,必须要到官方网站下载,请不要在中国的任何站点下载,我知道很多网友很热心,到处上传源码,例如51CTO,CU,CSDN之类的,这样做的结果只会是限制你的视野让你更加无知。官网可以让你知道其历史版本,更多技术上的支持。

交叉工具链,如果有供应商支持的SDK包一般就很简单,configure,make,make install一般没问题。如果没有,可能需要多找点网络资料。可能有童鞋会觉得非常混淆,因为不同的内核和编译器之间的版本支持不一样,所以需要多读一下声明的文件,软件的版本有时真的不是越新越好,对于开源项目,2-5年内的版本如果能够满足需求个人觉得都是可以容忍的。

配置,这步看似简单,实际上要一步到位可能还得几个项目的积累。一般编译要移植的源代码,主要工作就是配置好交叉工具链在configure上面的位置即可,一般包括CC,AR,RANLIB,LIB,INCLUDE,这步顺利的基础跟之前所说的查找资料很有关。有时可能你会碰到没有configure的开源代码,没办法,直接修改Makefile吧。

最后无法跳过的编译

编译,如果是对新人来说,好运反而不好,你会容易丢失很多细节。

一般这个阶段出问题,无非就是交叉工具链路径不对,没有添加环境变量,源码上找不到*.h,*.c,这种得depend,可以直接修改相关代码的地方(备份好原来的压缩包啊),或者本来就是缺少了一下库的支持,这时只要适当添加对应的库即可。我也碰过一些需要打补丁的,大家可以多看源码的release notes,把相应的库的patch打进去即可。可能还会有各种神奇有趣的事情在前面等着大家去发现。

编译成功了,可以用file命令看看文件的体系架构是否正确。

入门的童鞋可能都会比较痛苦,linux体系知识混杂,每前进一步都是不容易的。学习到移植一般都有一定的基础了,祝君一路顺风。

时间: 2024-11-05 17:20:57

交叉编译链环境注意事项以及总结的相关文章

1.裸机开发环境的体验(Redhat 6.4 + vbox)

1.裸机开发环境的体验(Redhat 6.4 + vbox) 一.裸机开发的一般流程 注意:这是假定你已经搭建好了裸机开发环境 我们裸机的一般开发流程:图1-1: 图1-1 裸机开发流程 由于在这篇文章里是体验裸机程序,所以我们跳过了1.2步骤.直接从第三步开始: 二.交叉工具链的安装: 在这里,我们编写的程序是要在开发板运行的,不是在pc机,所以pc机的gcc等编译器不再适用了,我们必须按照交叉工具链.由于我们的程序是要在ARM架构运行的.所以安装的工具链是arm-linux-*的工具链. 我

Linux Apache web服务器 配置详细教程

3 Linux Apache web服务器 v2.4.29学习要点: 1.apache用途,工作模式,httpd.conf的配置重要参数2.虚拟主机 工作模式的参数优化 3.1 Apache 概述: 3.1.1 Apache 概述Apache是世界使用排名第一的Web服务器软件.它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一.它快速.可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中.同时Apache音译为

HyperLeger Fabric开发(一)——HyperLeger简介

HyperLeger Fabric开发(一)--HyperLeger简介 一.HyperLeger简介 1.HyperLeger简介 Hyperledger(超级账本)是Linux基金会于2015年发起的推进区块链数字技术和交易验证的开源项目,目标是让成员共同合作,共建开放平台,满足来自多个不同行业各种用户案例,并简化业务流程.由于点对点网络的特性,分布式账本技术是完全共享.透明和去中心化的,故非常适合于在金融行业的应用,以及其它的例如制造.银行.保险.物联网等行业.通过创建分布式账本的公开标准

从零开始构建Linux

目的:深入了解以为Linux内核的系统是如何组成,运行,以构建一个最基础的,纯净的系统. LFS构建步骤宿主机准备 - linux操作系统安装 - 使用独立硬盘,创建分区 - 配置用户和组 - 下载所有需要的软件包源代码准备开发环境构建一个基本开发环境构造完整的目标系统配置系统启动脚本启动系统 一.宿主系统准备1.1.安装所需要依赖包 [[email protected] ~]# yum install -y bash binutils bison bzip2 coreutils diffuti

如何得到交叉编译器

了解了之前的交叉编译器的命名规则后,也就明白了交叉编译,针对不同架构,平台,目标系统等的区别. 而对于嵌入式开发,想要获得,针对我们所需要的,目标的CPU所合适的交叉编译器,就成了接下来,顺其自然要考虑的事情. 想要得到,可用的,针对自己的CPU的交叉编译器,主要有两种方式: 3.2.1. 拿来主义:直接去下载和使用别人已经编译好的交叉编译器 难度等级:1级 这个没有啥特殊要求解释的,就是,网上,总会有,免费的,好用的各种资源的. 其中就包括,别人,已经针对某些CPU,某些平台,编译好了交叉编译

javascript中数据访问性能优化简析

我们一般写代码都会考虑代码的可读性.可扩展性及重要的是浏览器的解析.减少代码数量提高代码性能加载速度,是我们每个coder所追求的.在javascript中,我们有时必须考虑的是如何确定数据的存储位置,以获取最佳的读写效率,数据存储的位置,关系到代码执行过程中数据被检索的速度,数据的存储位置在很大程度会影响其读取速度. javascript中有4种基本的数据存取位置:直接量.变量.数组元素.对象才成员 每种数据存储的位置都有不同的读写消耗.一般的情况下,从一个直接量和局部变量中存取数据的性能差异

HyperLedger Fabric基于zookeeper和kafka集群配置解析

简述 在搭建HyperLedger Fabric环境的过程中,我们会用到一个configtx.yaml文件(可参考Hyperledger Fabric 1.0 从零开始(八)--Fabric多节点集群生产部署),该配置文件主要用于构建创世区块(在构建创世区块之前需要先创建与之对应的所有节点的验证文件集合),其中在配置Orderer信息中有一个OrdererType参数,该参数可配置为"solo" and "kafka",之前博文所讲的环境配置皆是solo,即单节点共

区块链知识文档

熟悉的技术点 1.私有链环境(多节点) 搭建 geth2.熟悉基础命令3. RPCAPI 接口熟悉 后端交互用4.智能合约(代币发行) Solidity语言,我们就用这个,类似js的 以太坊私有链搭建: http://www.it-jason.com/archives/395http://www.it-jason.com/archives/433http://www.it-jason.com/archives/437 在线IDE browser-solidityhttp://remix.ethe

公有链,私有链,联盟链

(1)公有链 所谓公有就是完全对外开放,任何人都可以任意使用,没有权限的设定,也没有身份认证之类,不但可以任意参与使用,而且发生的所有数据都可以任意查看,完全公开透明.比特币就是一个公有链网络系统,大家在使用比特币系统的时候,只需要下载相应的软件客户端,创建钱包地址.转账交易.挖矿等操作,这些功能都可以自由使用.公有链系统由于完全没有第三方管理,因此依靠的就是一组事先约定的规则,这个规则要确保每个参与者在不信任的网络环境中能够发起可靠的交易事务.通常来说,凡是需要公众参与,需要最大限度保证数据公