在Ubuntu16.04下从源码编译交叉编译工具链arm-linux-gcc_ubuntu16.04 交叉编译 sox 源码-程序员宅基地

技术标签: 交叉编译工具链  arm-linux-gcc  ubuntu  嵌入式Linux学习  源码  tiny4412  

Linux系统:Ubuntu 18.04.1 LTS amd64
编译平台:Ubuntu 14.04.4 LTS
crosstool-ng-1.23.0
一、 下载安装crosstool-ng
1、 从crosstool-ng官网或github上下载最新版本。
wget http://crosstool-ng.org/download/crosstool-ng/crosstool-ng-1.23.0.tar.bz2
在这里插入图片描述
2、 解压源码,进入源码目录:
tar -jxvf crosstool-ng-1.23.0.tar.bz2
cd crosstool-ng-1.23.0
在这里插入图片描述
3、 安装编译依赖包
sudo apt-get install sed bash dpkg-dev bison flex patch texinfo automake m4 libtool cvs tar gzip bzip2 lzma libncurses5-dev bison flex texinfo automake libtool patch cvs cvsd gperf help2man gawk
在这里插入图片描述
4、 执行编译三部曲
./configure --prefix=/opt/crosstool-ng
make
sudo make install
在这里插入图片描述
有提示,解决如下:
5、 配置环境变量:
echo “PATH=$PATH:/opt/crosstool-ng/bin” >> ~/.bashrc
source ~/.bashrc
在这里插入图片描述

测试是否安装成功:
ct-ng –v
在这里插入图片描述
成功。
二、 配置交叉编译工具链
1、 创建目录:交叉工具链的输出目录,保存源码包目录,交叉编译器的安装路径:
mkdir crosstool-build src x-tools
在这里插入图片描述
将crosstool-ng源码包中samples/arm-unknown-linux-gnueabi/下的crosstool.config拷贝到交叉工具链的输出目录crosstool-build下
cp /opt/crosstool-ng/lib/crosstool-ng-1.23.0/samples/arm-unknown-linux-gnueabi/crosstool .config
在这里插入图片描述
2、 执行ct-ng menuconfig进入配置界面
在这里插入图片描述
设定源码包路径和交叉编译工具链的安装路径
Paths and misc options—>
激活 ‘Try features marked as EXPERIMENTAL’ 选项
( H O M E / a r m − l i n u x − t o o l s / s r c ) L o c a l t a r b a l l s d i r e c t o r y ( {HOME}/arm-linux-tools/src) Local tarballs directory ( HOME/armlinuxtools/src)Localtarballsdirectory({HOME}/crosstool-ng/x-tools) Prefix directory
修改交叉编译工具针对的架构(S3C6410)
Target options—>
Target architecture(arm)
Endianness(Little endian)
Bitness(32-bit)
(armv6zk) Architecture level
(arm1176jzf-s) Emit assembly for CPU
Floating point(hardware FPU)
其它选项用缺省值,退出并保存配置工具
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
3、 执行ct-ng build编译工具链
ct-ng build
在这里插入图片描述
报错,是因为内存不足,关闭虚拟机,设置运行内存为4GB,问题解决。
再次在crosstool-build下执行 ct-ng build
在这里插入图片描述
再次报错,打开ubsan.c 1474行修改源码:
.build文件夹属于隐藏文件夹,所以重命名之后再操作。
if (xloc.file == NULL || strncmp (xloc.file, “\1”, 2) == 0
|| xloc.file == ‘\0’ || xloc.file[0] == ‘\xff’
|| xloc.file[0] == ‘\0’ || xloc.file[0] == ‘\xff’
|| xloc.file[1] == ‘\xff’)
return false;
再次执行ct-ng build
在这里插入图片描述
至此,全部安装成功。
4、 添加环境变量:
echo “PATH= P A T H : PATH: PATH:HOME/arm-linux-tools/x-tools/bin” >> ~/.bashrc
source ~/.bashrc
在这里插入图片描述
5、 测试是否安装成功
arm-unknown-linux-gnueabihf-gcc –v
在这里插入图片描述
三、 改名:
arm-unknown-linux-gnueabihf-这样的命令不方便使用,我们希望是arm-linux-gcc这样的形式。通过shell脚本完成。
sudo vim link.sh
内容如下:
#!/bin/sh
PREFIX=arm-unknown-linux-gnueabihf-
AFTFIX=arm-linux-
ln -s ${PREFIX}gcc ${AFTFIX}gcc
ln -s ${PREFIX}addr2line ${AFTFIX}addr2line
ln -s ${PREFIX}ar ${AFTFIX}ar
ln -s ${PREFIX}as ${AFTFIX}as
ln -s ${PREFIX}c++ ${AFTFIX}c++
ln -s ${PREFIX}c++filt ${AFTFIX}c++filt
ln -s ${PREFIX}cpp ${AFTFIX}cpp
ln -s ${PREFIX}g++ ${AFTFIX}g++
ln -s ${PREFIX}gcov ${AFTFIX}gcov
ln -s ${PREFIX}gdb ${AFTFIX}gdb
ln -s ${PREFIX}gprof ${AFTFIX}gprof
ln -s ${PREFIX}ld ${AFTFIX}ld
ln -s ${PREFIX}ldd ${AFTFIX}ldd
ln -s ${PREFIX}nm ${AFTFIX}nm
ln -s ${PREFIX}objcopy ${AFTFIX}objcopy
ln -s ${PREFIX}objdump ${AFTFIX}objdump
ln -s ${PREFIX}populate ${AFTFIX}populate
ln -s ${PREFIX}ranlib ${AFTFIX}ranlib
ln -s ${PREFIX}readelf ${AFTFIX}readelf
ln -s ${PREFIX}size ${AFTFIX}size
ln -s ${PREFIX}strings ${AFTFIX}strings
ln -s ${PREFIX}strip ${AFTFIX}strip
ln -s ${PREFIX}cc ${AFTFIX}cc
ln -s ${PREFIX}dwp ${AFTFIX}dwp
ln -s ${PREFIX}elfedit ${AFTFIX}elfedit
ln -s ${PREFIX}gcc-6.3.0 ${AFTFIX}gcc-6.3.0
ln -s ${PREFIX}gcc-ar ${AFTFIX}gcc-ar
ln -s ${PREFIX}gcc-nm ${AFTFIX}gcc-nm
ln -s ${PREFIX}gcc-ranlib ${AFTFIX}gcc-ranlib
ln -s ${PREFIX}gcov-tool ${AFTFIX}gcov-tool
ln -s ${PREFIX}ld.bfd ${AFTFIX}ld.bfd
ln -s ${PREFIX}ld.gold ${AFTFIX}ld.gold
:wq!
sudo sh link.sh
在这里插入图片描述
成功!
四、 测试
在/usr/yjp/目录下创建文件夹arm-linux-gcc并进入,用来保存源码:
在这里插入图片描述
创建hello.c
touch hello.c
在这里插入图片描述
编辑hello.c
vi hello.c
#include <stdio.h>
int main(){
printf(“Hello Embedded!”);
return 0;
}
保存退出
编译:arm-linux-gcc –c hello.c
链接:arm-linux-gcc –o hello hello.o
在这里插入图片描述
将hello可执行文件下载到开发板上运行:
在这里插入图片描述
至此全部结束。

参考文章:https://www.jianshu.com/p/a513590de6b8

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_37771089/article/details/84987959

智能推荐

ASP.NET Core 运行原理解剖[5]:Authentication-程序员宅基地

文章浏览阅读3.1k次。在现代应用程序中,认证已不再是简单的将用户凭证保存在浏览器中,而要适应多种场景,如App,WebAPI,第三方登录等等。在 ASP.NET 4.x 时代的Windows认证和Forms认证已无法满足现代化的需求,因此在ASP.NET Core 中对认证及授权进行了全新设计,使其更加灵活,可以应付各种场景。在上一章中,我们提到HttpContext中认证相关的功能放在了独立的模块中,以扩展的方式来展_.net core authenticationhandler httpcontext

java8特性:list转Map并排序_list转成map且顺序不变-程序员宅基地

文章浏览阅读1.5w次。初始代码public Map&amp;lt;String,List&amp;lt;RgwstBean&amp;gt;&amp;gt; getMap(List&amp;lt;RgwstBean&amp;gt; lists){ Map&amp;lt;String,List&amp;lt;RgwstBean&amp;gt;&amp;gt; map = new TreeMap&amp;lt;String,List&am_list转成map且顺序不变

leaflet通过WFS服务加载geoserver 矢量数据_leaflet geoserver wfs 方式-程序员宅基地

文章浏览阅读5.9k次,点赞5次,收藏16次。leaflet通过WFS服务加载geoserver 矢量数据1.前言2.从geoserver获得geojson数据3.geoserver跨域配置4.根据请求结果生成layer5.完整代码1.前言leaflet默认支持的服务只有WMS,因此不能加载WFS数据,但是leaflet提供了另一个方法geoJson,它的作用是从一个geojson文件中加载地图,所以利用leaflet加载WFS数据的一个..._leaflet geoserver wfs 方式

自定义动画animate_使用animate方法制作任意动画是什么意思-程序员宅基地

文章浏览阅读937次。开发工具与关键技术:VS,MVC作者:陈梅撰写时间:2019年6月2 日所有代码来源与老师教学这次分享一个好玩的自定义动画效果,这次还是用jQuery做出来的小功能。这次我们先直接看最后已经布局好的效果。把所想写的内容填写到p标签中,给到p标签的动画功能是,页面已执行时,p标签的内容就会渐渐消失。在给一个紫色的div盒子,这个盒子要实现四种动画效果,所以给这四个动画效果一个下拉框,选择..._使用animate方法制作任意动画是什么意思

如何在MonogoDB中查看配置的参数值-程序员宅基地

文章浏览阅读1k次。怎样在MongoDB实现mysql show variables like 'xx';例如:1.查看所有参数值:C:\Users\duansf>mongoMongoDB shell version: 2.6..._查看mongodb 默认参数值

【ACO TSP】基于matlab蚁群算法求解旅行商问题【含Matlab源码 1583期】-程序员宅基地

文章浏览阅读863次。蚁群算法求解旅行商问题完整的代码,方可运行;可提供运行操作视频!适合小白!

随便推点

python 内置函数-程序员宅基地

文章浏览阅读75次。Python内置函数(1)——absPython内置函数(2)——divmodPython内置函数(3)——maxPython内置函数(4)——minPython内置函数(5)——powPython内置函数(6)——roundPython内置函数(7)——sumPython内置函数(8)——bool...

希望OL修改服务器经验,希望OL服务端架设技术教程-程序员宅基地

文章浏览阅读2.8k次。经测试自带的MYSQL可能有问题,也可能没问题。如果有问题请下载安装MYSQL5.0然后导入端里面自带的guaiwu.sql希望ol教程=========================================客户端SO3D.exe需要改IP 我这里是在服务器上录像的,我把客户端的SO3D.exe复制到服务端这里了具体更改用UE搜索MessgerIp 在附近找到他的ip 改成你自己的,我这..._希望ol 服务器架设

python爬虫系列之爬取百度文库(二)_python百度文库爬虫-程序员宅基地

文章浏览阅读7.9k次,点赞4次,收藏27次。在上一篇文章中我们已经介绍了selenium,以及如何去安装selenium,这一章我们首先介绍一下一个网页的结构,以及如何去爬取和解析一个网页。网页组成结构介绍一个网页主要由导航栏、栏目、以及正文这三个部分组成,而一般我们所说的爬虫,主要是针对正文来提取对于我们有价值的消息。正文其实就是一个HTML格式的文件,我们主要是通过分析HTML的组成元素来提取信息。下面我介绍一下,两种分析HTM_python百度文库爬虫

计算机网络实验报告建立校园网,计算机网络实验报告-程序员宅基地

文章浏览阅读2.6k次,点赞2次,收藏29次。设计性实验报告一、实验目的通过对网络设备的连通和对拓扑的分析,加深对常见典型局域网拓扑的理解;通过路由建立起网络之间的连接,熟悉交换机、路由器的基本操作命令,了解网络路由的设计与配置。二、背景描述假设某校园网通过1台三层交换机连到校园网出口路由器,路由器再和校园外的另一台路由器相接,现做适当配置,实现校园网内部主机与校园网外部主机的相互通信。三、实验设备二层交换机五台、三层交换机一台,路由器两台,..._计算机网络校园网组建 实训报告

蓝桥杯之等差素数列_长度为十的等差素数列,公差最小是多少蓝桥杯-程序员宅基地

文章浏览阅读554次,点赞2次,收藏3次。题目描述本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。2,3,5,7,11,13,....2,3,5,7,11,13,.... 是素数序列。 类似:7,37,67,97,127,1577,37,67,97,127,157 这样完全由素数组成的等差数列,叫等差素数数列。上边的数列公差为 30,长度为 66。20042004 年,格林与华人陶哲轩合作证明了:存在任意长度的素数等差数列。 这是数论领域一项惊人的成果!有这一理论为基础,请你借助手中的计算机,满怀信心地搜_长度为十的等差素数列,公差最小是多少蓝桥杯

iOS应用内付费(IAP)开发步骤列表_ios 添加订阅会员项目开发-程序员宅基地

文章浏览阅读1.6k次。配置Developer.apple.com登录到Developer.apple.com,然后进行以下步骤:为应用建立建立一个不带通配符的App ID用该App ID生成和安装相应的Provisioning Profile文件。配置iTunes Connect登录到iTunes Connet,然后进行以下步骤:用该App ID创建一个新的应用。在该应用中,创建应用内付费项_ios 添加订阅会员项目开发

推荐文章

热门文章

相关标签