在ubuntu8.10 下建立 ARM-Linux 交叉编译环境

Ubuntu下ARM交叉编译环境 Ubuntu下ARM交叉编译环境 初次接触ARM开发版,才知道开发版需要ARM 1.准备编译基础环境 因为ARM是32位,而Ubuntu是64位的,所以先安装一些32位的库。 sudo apt-get install lib32ncurses5 lib32z1 lib32stdc++6 2.下载ARM-Linux-gcc 友善之臂官网下载:ARM-Linux GCC 4.4.3 3.解... 阅读详情

 

 

很久都没有写文章了 ,经过了将近半年的奔波,终于可以写点东西了!在广州工作时 ,同事极力推荐我用ubuntu,使用之后的确很爽,并决定以后在ubuntu下工作,完全可以抛弃windows(晕到死)。决定开始 移植Linux到mini2440。首先就是在ubuntu下建立交叉编译工具链。借着在Fedora 下建立ARM-Linux的交叉编译工具的经验,按理说应该是不会有问题的,但是结果是比在Fedora下碰到的问题多得多了。以下先介绍成功编译的过 程,碰到的问题和解决办法后面说。
这次编译过程中对我有重大帮助的资料有:
《 编译Mysql时configure: error: No curses/termcap library found 的错误解决方法》
《[原创]在ubuntu下动手编译arm-elf工具》

《在ubuntu下使用crosstool制作交叉编译工具》
《 ubuntu 8.04中编译ARM交叉平台的一点心得!》


关于crosstool的基本知识在我以前的
《在 Fedora 下建立 ARM-Linux 交叉编译环境》
中已有介绍,这里我再多说,以下是具体过程:
(1)保证你的ubuntu8.10下安装了以下软件开发工具。
Bison
flex
build-essential
patch
libncurses5-dev
我并没有试过没装这些工具的后果,都是网上的经验,你要是不信这个邪,就自己吃吃这个螃蟹。
(2)因为ubuntu8.10自带的是gcc-4.3.2无法用crosstool正常编译交叉编译器,所以必须安装gcc-4.1,但是不必卸载4.3.2。方法是用新立得软件包管理器安装gcc-4.1,之后 参考
chinazcw
的方法
sudo rm /usr/bin/gcc            (删除GCC,它只是个到gcc-4.3.2的软连接文件)
sudo ln -s /usr/bin/gcc-4.1 /usr/bin/gcc        (建立GCC到gcc-4.1的软连接)

(3)如果你运行
ls -la /bin/sh
命令看到/bin/sh其实是一个指向dash的软链接,则请运行以下命令,将/bin/sh链接到bash。
sudo mv /bin/sh /bin/sh.old
sudo ln -sf bash /bin/sh
(4)按照老方法修改crosstool的文件:demo-arm9tdmi.sh、gcc-4.1.1-glibc-2.3.2.dat,最后运行demo-arm9tdmi.sh。这些过程请参考我以前的文档
《在 Fedora 下建立 ARM-Linux 交叉编译环境》
。
     过程就这么简单,但是有些是用失败换来的。下面介绍下我的编译血泪史:
     一开始,我并不想用gcc-4.1而是想用自带的gcc-4.3.2,然后......................

   (1)编译到glibc的时候,在配置的时候会检测gcc的版本,configure 脚本认为gcc-4.3.2版本太老(其实是因为当时gcc还没有这么高的版本,只要不是3.2到4.1之间的版本,都认为too old),不能编译。
   这是可以解决的,方法就是修改glibc-2.3.2根目录下的configure 文件中的第1275行:
test -n "$CC" && break
done
if test -z "$CC"; then
  ac_verc_fail=yes
else
  # Found it, now check the version.
  echo "$as_me:$LINENO: checking version of $CC" >&5
echo $ECHO_N "checking version of $CC... $ECHO_C" >&6
  ac_prog_version=`$CC -v 2>&1 | sed -n 's/^.*version /([egcygnustpi-]*[0-9.]*/).*$//1/p'`
  case $ac_prog_version in
    '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
    3.[2-9]*|4.[0-3]*)
       ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
    *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
这样就可以骗过configure ,继续编译下去。
   但是修改的时机要把握好,要在 demo-arm9tdmi.sh解压完glibc-2.3.2后,运行其configure之前。我直接就将configure拷出来,修改后在crosstool解压完所有文件后直接覆盖源文件。
   其实这种方法我在fedora9下使用crosstool时就用过,但是当时发现f9真是做得比f8差,历史的倒退,所以就到回去用f8了,就没写文章总结。

  (2)编译gcc-3.3.6的时候,出现以下错误:
/usr/include/bits/fcntl2.h:51: error: call to '__open_missing_mode' declared with attribute error: open with O_CREAT in second argument needs 3 arguments
    这纯属软件bug,因为使用open函数的时候,如果在第二个参数中使用了 O_CREAT,就必须添加第三个参数:创建文件时赋予的初始权限。而在gcc-3.3.6/gcc/的collect2.c文件中有漏掉第三个参数的错 误,而gcc-4.3对语法错误的检查严格是出了名的(4.1就不会因此错误退出),所以就退出了。
    这也是可以解决的,就是在gcc-3.3.6/gcc/collect2.c中的第1575行改为:
redir_handle = open (redir, O_WRONLY | O_TRUNC | O_CREAT, 0777);
    我还发现glibc-2.3.2/login/tst-grantpt.c也有一个类似错误,一起改过来,除后患。第44行:
fd = open (file, O_RDWR | O_CREAT, 0777);
   修改的时机也要把握好,我是在crosstool解压完所有文件后和之前configure 文件一起直接覆盖源文件。
  (3)经历了以上的痛苦后,继续编译,会出现以下错误:
*** buffer overflow detected ***: arm-9tdmi-linux-gnu-ar terminated
fuck!!!!!!!!编译出来的 arm-9tdmi-linux-gnu-ar根本没法用!被耍了!放弃gcc-4.3.2!!!!!
   要是哪位仁兄解决了以上问题,并编译成功,一定要通知小弟啊!
  (4)安装了gcc-4.1之后,重新编译。心想这回好了吧?!不想,有出了以下错误:
In file included from version.c:33:
/home/tekkaman/working/crosstool-0.43/build/arm-9tdmi-linux-gnu/gcc-4.1.1-glibc-2.3.2/build-glibc/csu/version-info.h:2:1: missing terminating " character
/home/tekkaman/working/crosstool-0.43/build/arm-9tdmi-linux-gnu/gcc-4.1.1-glibc-2.3.2/build-glibc/csu/version-info.h:3:1: missing terminating
" character
google后发现,原来是ubuntu将系统默认的shell设置成了dash (the Debian Almquist Shell),所以通过脚本生成的文件格式和bash的不一样,导致了编译错误。在使用了
ursa
的方法后问题解决。
sudo mv /bin/sh /bin/sh.old
sudo ln -sf bash /bin/sh
(5)继续重新编译,在gcc做好后(此时gcc已可用,只是gdb还没编译好),编译gdb的时候出了以下错误:
configure: error: no termcap library found
很显然,是因为没装一个库文件造成的,google后发现正解:用新立得安装libncurses5-dev(或是apt-get install libncurses5-dev)即可。
   
   最后,编译成功,看到了盼望已久的“done”。

 

 

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/34474/showart_1388072.html

 

Ubuntu16.04 ARM/Qt 交叉编译环境搭建 嵌入式开发Ubuntu16.04 ARM/Qt 交叉编译环境搭建背景环境说明安装交叉编译工具下载Qt源码包编译Qt源码安装QtCreator配置QtCreator应用QtCreator交叉编译 Ubuntu16.04 ARM/Qt 交叉编译环境搭建 最近由于工作需要,接触到交叉编译,鉴于之前没有完整做过这方面的工作,记录一下。后续也会尽量把相关的内容都加入进来 背景 最近由于客户需求,要将windows下的一个网络相机的sdk移植到嵌入式环境下,客户用的开发板是toybrick-3399Pro,目前手上 阅读详情

相关推荐

Ubuntu 搭建 ARM 交叉编译环境

Ubuntu 搭建 ARM 交叉编译环境准备环境配置 ARM解压配置环境变量使环境变量生效并验证编译测试 准备环境 环境:Ubuntu16.04X64 下载:arm-linux-gcc-4.4.3.tar.gz 注意: arm-linux-gcc-4.4.3.tar.gz是32位,如果使用的系统是Ubuntu 32bit。则可以直接进行环境搭建。如果 系统是Ubuntu 64bit,需要给系统安装32bit的依赖库: sudo apt-get install libc6:i386 sudo apt-g

wzfgd的博客 4369

树莓派(Linux系统通用)交叉编译(环境搭建、简单使用),含Ubuntu系统wiringPi库安装使用

交叉编译

Good_go的博客 5475

ubuntu中root权限的获得及arm-linux-gcc交叉编译环境的搭建

对于一名接触linux系统才几天的新手来说,搭建

u012395430的专栏 3549

在Fedora和Ubuntu上搭建FFmpeg交叉编译环境(ARM)

原文地址:https://github.com/jackyxinli/cross-compile arm-none-eabi-gcc (ARM architecture,no vendor,not target an operating system,complies with the A...

chixungou5158的博客 415

【教程】在Ubuntu下搭建ARM处理器 arm-linux-gcc 交叉编译环境以及OpenJTAG + openocd 烧写环境

在Ubuntu下搭建ARM处理器 arm-linux-gcc 交叉编译环境以及OpenJTAG + openocd 烧写环境前言本教程所用操作系统为Ubuntu 16.04,所用ARM处理器为Samsung S3C2440,在FriendlyARM Mini2440开发板上进行操作,使用OpenJTAG + openocd 烧录程序。当然,道理是相通的,所以在不同平台下也只是稍微修改一部分的配置就可

AI-Ziping Chen 2881

基于Eclipse的交叉编译环境的建立

虚拟机Linux:ubuntu12.04 交叉编译工具:arm-linux-gcc-3.4.5 集成开发工具:Eclipse 第一步:安装交叉编译工具 1.这一步骤比较简单,下载下载的arm-linux-gcc-3.4.5.tar.bz2解压到Linux根目录即可. #tar -jxvf arm-linux-gcc-3.4.5.tar.bz2 -C /2.设置环境变量。 #e

ZHCX2011的专栏 3471

arm linux移植笔记,arm-linux学习笔记之minigui移植

arm-linux学习笔记之minigui移植minigui-1.6.10在s3c2410平台的移植开发板:atmel9263CPU:at9263linux-2.6.26fs:nfsLCD:TFT320 X 240PC:ubuntu 8.10(一)准备工作下载软件包libminigui-1.6.10.tar.gzmg-samples-1.6.10.tar.gzminigui-res-1.6.10....

weixin_33393017的博客 538

手把手教你逆向分析某里系bx-ua参数(以225版本为例)

本文详细解析了某里系应用bx-ua参数的逆向工程实战方法,重点拆解其三层加密体系(二进制加密、字符替换和Base64编码)。通过工具链配置和实战案例,帮助开发者掌握逆向分析技巧,适用于合法合规的安全研究和加密技术评估场景。

weixin_33220360的博客 407

linux使用内核gcc,Ubuntu7.10系统下使用 Gcc4.1.1交叉编译工具编译linux-2.6.24内核

Ubuntu7.10系统下使用armlinux Gcc4.1.1交叉编译工具编译为s3c2410板编译linux2.6.24内核在前一篇文章中我介绍了如何使用crosstool-0.43建立Gcc4.1.1的armlinux交叉编译环境。这里介绍如何配置并编译可以在ARM9下运行的linux内核。1.修改Makefilecdcrosstool-0.43/build/arm-9tdmi-linux-...

weixin_39895977的博客 316

EM4095低频RFID曼彻斯特解码实战:从原理图到MCU代码实现

本文详细介绍了EM4095低频RFID读卡器的设计与实现,从芯片工作原理、天线设计到曼彻斯特解码算法。重点讲解了基于STM32的MCU代码实现,包括定时器捕获、数字滤波和错误处理,为开发125kHz RFID系统提供实用指南。

oil88的博客 713

从零开始:YOLOv8车牌检测模型训练全流程实战

本文详细介绍了从零开始训练YOLOv8车牌检测模型的全流程实战指南。内容涵盖环境搭建、数据集收集与标注、模型配置与训练、评估测试及高级优化技巧。通过使用预训练模型和迁移学习,开发者可以高效构建精准的车牌检测系统,并掌握模型导出与部署的关键步骤。

weixin_29061041的博客 335

配置Ubuntu交叉编译环境

Ubuntu搭建交叉编译环境以及相关问题解决 1.交叉编译器安装资源 考虑到大多数人使用的是64位Ubuntu,以及能够更好运行,我在此提供了62位的arm-linux-gcc交叉编译器。(如果你的Linux系统是64位的,但安装32位的交叉编译器,还需要额外安装32位的运行库。) 我在此提供的是:arm-2009q3.tar.bz2,附上百度网盘下载链接: 链接:https://pan.baidu.com/s/1z_jKxXyLftHfszvaYH-SoA 提取码:yccy 2.安装步骤以及问题解决 在主

qq_45050714的博客 1万+

eQTL:连接突变与基因表达的桥梁

欢迎关注”生信修炼手册”!在高等生物中,很多的重要性状都为数量形状,比如农作物的产量,人类复杂疾病(高血液,糖尿病)等等。对于这些数量性状而言,往往受到多个基因的调控作用。为了更好的开展...

庐州月光的博客 7066

Ubuntu 22.04 搭建arm-linux-gcc交叉编译环境

Linux嵌入式开发的第一步,交叉编译环境搭建方法

Starryqc的博客 9094

实战:RK3568 Android14 点亮 LVDS 屏幕

4组数据 (D0~D3) + 1组时钟 (CLK)。最大支持 1280x800 @ 60Hz。8组数据 (Even03, Odd03) + 2组时钟。支持 1080P 及以上。/ {/* 背光与电源 *//** 关键配置:数据格式映射* 可选值: "jeida-18", "jeida-24", "vesa-24"* 6位屏选 xx-18, 8位屏选 xx-24* 颜色不对(偏色/底片效果)就换 VESA <-> JEIDA*/

qq_33427070的博客 1164

OpenHarness代码解读

Harness 是包裹在大模型之外、为其赋予完整执行能力的全套基础设施。模型负责提供智能与推理,Harness 则为模型提供感知、行动、记忆、工具与安全约束,使其从语言模型变成可自主完成复杂任务的实用智能体。我这里把向量数据库方案定义为:把对话片段、事件、偏好、工具结果等切成 memory chunks,做 embedding,存进向量库,查询时靠 ANN 相似度召回,再交给 LLM 读。AAAI 的综述类论文就明确指出,很多 LLM agent 的长期记忆就是这么做的。AAAI 期刊把文件系统方案。

qq_52053775的博客 187

【交叉编译 | arm版Ubuntu】arm版Ubuntu(飞腾平台)开发环境、交叉编译工具安装

👉本文介绍了 arm版Ubuntu(飞腾平台)搭建开发环境的过程,主要是如何下载、安装交叉编译工具安装。

wkd_007的博客 1607

Android Telephony主要模块及功能

Telephony的代码主要由五个模块组成 1.Telephony Frameworks 代码区域: frameworks/opt/telephony/ 其中主要的文件在如下目录 /frameworks/opt/telephony/src/java/com/android/internal/telephony/ 其中比较常见的有以下几类文件 1.BaseCommands、RIL构成R

泊客 7720

Ubuntu 8.10(64 bit) 下ARM9交叉编译环境的建立(转)

==========我在参考如下这篇帖子建立开发环境的时候,试了N此都没有成功(看来不动动脑子是不行的 ),最后把这文章里参考的相关资料又看了下,发现针问题处在dash的部分。不知道这只是我个人开发环境的问题还是作者笔误,也写出来我的相关设置,但愿能帮到个别人,我就很HAPPY了 ^_^。=========================  《在 Ubuntu 8.10 64bit v

静者 1320

AI自瞄原理剖析(四)从Yolo推理坐标到屏幕坐标:基于FOV视角与焦距的坐标变换与精准瞄准

从Yolo推理框架得到的坐标到屏幕坐标的转换是一个涉及到FOV视角、焦距以及分辨率的复杂过程。通过数学公式,我们可以将推理框坐标反推为游戏内的实际坐标,并最终映射到屏幕坐标系中。利用这些信息,AI自瞄系统能够精确计算出准星从当前位置移动到敌人位置的距离,实现精准的自动瞄准。通过这种方法,AI自瞄系统能够在不同的游戏环境下灵活应对,提供高度精确的操作体验。在AI自瞄系统中,目标检测仅仅是第一步,获取到预测框的坐标后,我们还需要将这些坐标转换为实际屏幕上的精确位置。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1332

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

ubuntu环境下gcc-arm交叉编译环境的搭建(ARM32 8.2)

本文在ubuntu20.4版本的操作系统上,安装arm的32bit(aarch32)架构的交叉编译器,该交叉编译器可以用于arm32位的uboot,linux内核,应用软件和驱动程序的编译。本文在xilinx的zynq系列芯片上实测可以使用。

q544344318的博客 2685

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

一、ubuntu20.04交叉编译环境配置arm-linux-gnueabihf-gcc

在ubuntu上源码构建python,编译结果适用x86-64平台,接下来需要编译python的C代码,使之适用于arm平台,方便后续操作。

weixin_46115467的博客 3545

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

gcc-arm-none-linux,建立ARM交叉编译环境arm-none-linux-gnueabi-gcc

一、编译准备:工作电脑的环境是Ubantu10.04。确认Ubantu是否已经安装 gmp和mpfr。若没有,下载安装,地址如下:1.编译工具链需要的源码包:建立编译工作目录/home/huazi/cross_compile,目录下建立三个子目录build-tools、kernel、tools$ mkdir -p /home/huazi/cross_compile$ cd /home/huazi/...

weixin_28788983的博客 2322

在Ubuntu10.04中建立ARM交叉编译环境

在Ubuntu10.04中建立ARM交叉编译环境   在Linux中建立整个ARM交叉编译环境的整体过程为: 1、  下载源文件 2、  在Linux中建立编译目录并设置环境变量 3、  建立内核头文件 4、  建立二进制工具(binutils) 5、

胡超的学习日志 1万+

嵌入式Linux实战篇--交叉编译环境的建立(基于ubuntu 8.10)

 作者:曹忠明,华清远见嵌入式学院讲师在进行嵌入式开发之前,首先要建立一个交叉编译环境,这是一套编译器、连接器和libc库等组成的开发环境。本文具体说明了嵌入式交叉编译环境的建立过程和具体的操作步骤,希望能够对各位朋友搭建对应的交叉编译环境有所帮助。一、所需软硬件环境■ 主机环境建立交叉编译工具链的主机环境:Ubuntu 8.10,gcc-4.3.2■ Ubuntu 8

farsightliuht的专栏 554
上一篇: 嵌入式系统接入网及其网络接口技术研究
下一篇: busybox简介
Linux先生
博客等级 码龄20年 97粉丝 43原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值