交叉编译环境的创建

创建飞腾CPU的交叉编译环境 本文主要描述了 从开源社区下载源代码软件包 在x86平台上创建飞腾CPU交叉编译环境 利用交叉编译环境编译FT2000+/64服务器的内核 1. 源代码 源代码名称 下载网址 下载版本 Linux kernel https://www.kernel.org linux-4.19.149.tar.xz gnu binutils ftp://ftp.gnu.org/gnu/binutils/ binutils-2.35.tar.xz gnu gcc ftp://ftp.gnu.o 阅读详情

紫色为更正

一、准备工作
      
       首先需要一台运行Linux操作系统的PC以完成我们的编译工作。
       其次要准备如下一些源文件。
 
       1、源文件准备
         binutils-2.14.tar.gz
         ftp://ftp.gnu.org/gnu/binutils/binutils-2.14.tar.gz
         gcc-core-2.95.3.tar.gz
         ftp://ftp.gnu.org/gnu/gcc/gcc-2.95.3/gcc-core-2.95.3.tar.gz
         gcc-g++2.95.3.tar.gz
         ftp://ftp.gnu.org/gnu/gcc/gcc-2.95.3/gcc-g++-2.95.3.tar.gz
         glibc-2.2.4.tar.gz
         ftp://ftp.gnu.org/gnu/glibc/glibc-2.2.4.tar.gz
         glibc-linuxthreads-2.2.4.tar.gz
         ftp://ftp.gnu.org/gnu/glibc/glibc-linuxthreads-2.2.4.tar.gz
         linux-2.4.21.tar.gz
         ftp://ftp.kernle.org/pub/linux/kernel/v2.4/linux-2.4.21.tar.gz
         patch-2.4.21-rmk1.gz # linux kernel patch for arm
         ftp://ftp.arm.linux.org.uk/pub/linux/arm/kernel/v2.4/patch-2.4.21-rmk1.gz
 
       binutils-2.14.tar.gz这个压缩包包含有ld,ar,as等一些产生或者处理二进制文件的工具。
    gcc-core-2.95.3.tar.gz这个压缩包是GCC的主体部分,GCC是GNU Compiler Collection的简称,顾名思义,它能够编译很多种高级语言,例如C、C++,Java等,而这个压缩包中含有C编译器,及公共部分,而对其他语言的支持,采用另外的压缩包单独发布。
    gcc-g++2.95.3.tar.gz,这个压缩包就是为使GCC能够编译C++程序而单独发布的。
    glibc-2.2.4.tar.gz,libc是很多用户层应用都要用到的库,kernel和bootloader不需要这个库的支持,这个库主体部分封装在这个压缩包内。
    glibc-linuxthreads-2.2.4.tar.gz,这是Libc用于支持Posix线程而单独发布的一个压缩包。
    linux-2.4.21.tar.gz,这个压缩包就是Linux的内核。
    patch-2.4.21-rmk1.gz,这个压缩包是用来给Linux内核打补丁,以使其可以支持ARM的硬件平台。
 
       2、工作目录搭建
       我们创建如下的目录树结构
       mkdir arm
       mkdir tool-chain
       mkdir build-dir
       mkdir src-dir
       mkdir setup-dir
       mkdir kernel
      
       arm这个目录是我们的最顶层工作目录,我们所有的编译工作都在这里完成。
       tool-chain这个目录是我们交叉编译工具的安装位置,它下面的bin子目录存放我们创建好的编译器,汇编器,连接器,以及编译好的C库也会安装到这个目录之下。
       setup-dir这个目录用来存放我们下载的压缩包。
       src-dir这个目录用于存放binutils,gcc,glibc解压之后的源文件。
       kernel这个目录用来存放内核文件,对内核的配置、编译工作将在这个目录中完成。
       build-dir用来编译src-dir中的源文件,具体就是binutils,gcc,glibc的编译工作将在这个目录下完成。这种源文件目录和编译目录分离的编译方式是GNU所推荐的。
      
       cd ./src-dir
       tar –xvzf ../setup-dir/ binutils-2.14.tar.gz
       tar –xvzf ../setup-dir/ gcc-core-2.95.3.tar.gz
       tar –xvzf ../setup-dir/ glibc-2.2.4.tar.gz
       tar –xvzf ../setup-dir/ glibc-linuxthreads-2.2.4.tar.gz –directory=./glibc-2.2.4   //unsuccess
 
       这样我们在src-dir目录下就形成了3个源文件目录binutils-2.14,gcc-core-2.95,3,glibc-2.2.4,其中分别存放着binutils tools,gcc,glibc的源代码。接下来我们到build-dir中创建3个与这三个源文件目录对应的编译目录。
      
       cd ../build-dir
       mkdir ../build-dir/build-binutils
       mkdir ../build-dir/build-gcc
       mkdir ../build-dir/build-glibc
 
       我们将在这三个目录中完成对binutils tools, gcc, glibc的配置和编译工作。下面还要把内核文件解压到kernel目录下,并打补丁。
 
       cd ../kernel
       tar –xvzf ../setup-dir/ linux-2.4.21.tar.gz
       cd ./linux-2.4.21
       patch –p1 <../../setup-dir/ patch-2.4.21-rmk1 //unsuccess
 
 
二、开始创建
 
1、  确定几个系统变量
cd ../../
export TARGET=arm-linux
export PREFIX=../arm/tool-chain
export TARGET_PREFIX=$PREFIX/$TARGET
export KERNEL_SOURCE_LOCATION=../kernel/linux-2.4.21
export PATH=$PREFIX/bin:$PATH

创建目录
 
       几个系统变量经常要用到,TARGET定义了目标机,PREFIX是工具链的安装目录,KERNEL_SOURCE_LOCATION是内核文件位置。
 
2、  创建binutils
       运行如下命令来创建binutils
       cd ./build-dir/build-binutils
        ../../src-dir/binutils-2.14/configure –target=$TARGET –prefix=$PREFIX
       make
       make install
       这时$PREFIX/bin下创建了一些文件,包括arm-linux-ld,arm-linux-as等。
3、  编译内核
 
       cd ../../kernel/linux-2.4.21

             
       改Makefile文件使
       make ARCH = arm CROSS_COMPILE=arm-linux-

 

        编译linux的内核,进入该目录,命令make menuconfig
 之后,出现下面的错误:
rm -f include/asm-arm/arch include/asm-arm/proc
(cd include/asm-arm; ln -sf arch-mx2ads arch; ln -sf proc-armv proc)
rm -f include/asm
( cd include ; ln -sf asm-arm asm)
make -C scripts/lxdialog all
make[1]: Entering directory `/home/lhs/HHARMMX21/linux-2.4.20/scripts/lxdialog'
/usr/bin/ld: cannot find -lncurses
collect2: ld returned 1 exit status
-e
>> Unable to find the Ncurses libraries.
>>
>> You must have Ncurses installed in order
>> to use 'make menuconfig'

make[1]: *** [ncurses] Error 1
make[1]: Leaving directory `/home/lhs/HHARMMX21/linux-2.4.20/scripts/lxdialog'
make: *** [menuconfig] Error 2

解决方法:

执行命令: sudo apt-get install ncurses-dev 即可!

(ncurses 用于make menuconfig界面显示)

       
       make menuconfig
       在System Types中选择正确的硬件类型
 
       make dep
 
       之后执行如下操作
       mkdir $TARGET_PREFIX/include
       cp -r $KERNEL_SOURCE_LOCATION/include/asm-arm 
                     $TARGET_PREFIX/include/asm

[cp -r kernel/linux-2.4.21/include/asm-arm arm/tool-chain/arm-linux/include/asm]
       cp -r $KERNEL_SOURCE_LOCATION/include/linux
                     $TARGET_PREFIX/include/linux
 [cp -r kernel/linux-2.4.21/include/linux arm/tool-chain/arm-linux/include/linux]
4、  创建boot-trap gcc,这个GCC没有glibc库的支持,所以只能用于编译内核,bootloader等,后面创建C库也要用到这个编译器,所以创建它主要是为创建C库做准备,如果只想编译内核和bootloader那么,就可以到此结束。
       cd ../../build-dir/build-gcc
         ../../src_dir/gcc-2.95.3/configure -target=$TARGET  -prefix=arm/tool-chain --with-headers=arm/kernel/linux-2.4.21/include -enable-language=c --disable-threads    

             然后修改src-dir/gcc-2.95.3/gcc/config/arm/t-linux文件,在
              TARGET_LIBGCC2_CFLAGS中添加如下两个定义
              -Dinhibit_libc –D__gthr_posix_h
       make
       make install              //unsuccess
       这时$PREFIX/bin下创建了一些文件,主要创建了arm-linux-gcc。
5、  创建gblic
       cd ../build-glibc
       export CC=arm-linux-gcc
       ../../src-dir/glibc-2.2.4/configure –host=$TARGET –prefix=$TARGET_PREFIX
                            --enable-add-ons
       make
       make install           //unsuccess
 
6、  创建功能健全的GCC,并创建G++
       在成功创建了libc之后,我们就可以创建功能丰富的GCC编译器了,并且可以创建支持编译C++程序的G++。
       cd ../../src-dir
       tar –xvzf ../setup-dir/ gcc-g++2.95.3.tar.gz
       cd ../build-dir/build-gcc
       export CC=gcc
       ../../src-dir/gcc-2.95.3/configure –target=$TARGET –prefix=$PREFIX
              –enable-language=c,c++
      
       然后修改src-dir/gcc-2.95.3/gcc/config/arm/t-linux文件,在
              TARGET_LIBGCC2_CFLAGS中去除如下两个定义
              -Dinhibit-libc –D__gthr_posix_h
 
       make
       make install
 
7,至此我们成功的创建了ARM Linux的交叉编译工具


本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/embeddedheaven/archive/2006/10/10/1328200.aspx

STM32+W5500实战:5分钟搞定FreeModbus TCP移植(附完整代码) 本文详细介绍了如何在STM32微控制器上,结合W5500以太网芯片,快速完成FreeModbus TCP协议栈的移植,构建稳定可靠的工业级Modbus TCP服务器。内容涵盖硬件连接、软件架构、驱动适配、核心移植代码实现及调试优化技巧,旨在提供可直接应用于实际项目的完整解决方案。 阅读详情

相关推荐

解忧杂货铺(四):Hightec生成HEX方法+小功能开启

Hightec使用的一些常用技能

梦想技术家 2160

制作ARM Linux交叉编译环境

紫色为更正一、准备工作              首先需要一台运行Linux操作系统的PC以完成我们的编译工作。       其次要准备如下一些源文件。        1、源文件准备         binutils-2.14.tar.gz          ftp://ftp.gnu.org/gnu/binutils/binutils-2.14.tar.gz         gcc-core

vcvbve的专栏 524

Cesium创建无人机视锥,同步视锥与鹰眼地图视角,实现视锥键盘控制。解决视锥初始化位置不准确问题等

本文描述了一个基于Cesium的3D视锥体可视化系统开发过程。系统实现了主视图与鹰眼视图的双屏联动,支持通过键盘控制视锥体的空间移动(WASD前后左右,Q/E旋转,C/Z升降),并实时同步更新两个视图。关键技术包括:1)基于主视图Scene创建Camera实现视锥体精确绘制;2)通过PerspectiveFrustum设置视锥参数;3)建立双视图的相机位置及视角同步机制。目前暂未实现视锥体far/near边界在鹰眼视图中的可视化,该系统可应用于无人机视角监控等三维场景交互需求。

coder_bin的博客 1590

Make ARCH=arm CROSS_COMPILE=arm-linux-gcc menuconfig 分析

在编译LINUX内核时,首先要修改内核源码顶层目录下的makefile文件,将其中ARCH ?= $(SUBARCH)修改为ARCH ?= arm,将CROSS_COMPILE ?= 修改为CROSS_COMPILE ?= arm-linux-gcc,或者不修改,而是将ARCH和CROSS_COMPILE的值通过命令行传入。然后在linux内核源码目录下,执行make menuconf...

weixin_30312557的博客 2595

FICO F.27 Customer statement 打印

需求,定制化打印,替换标准的F.27打印 类似于采购订单的打印,但是略有不同,查阅资料之后步骤如下: T-code F.27 is SAP standard program to produce customer/vendor correspondence (letter). Correspondence Type is used to specify the related printing program and form for the particular correspondence. SAP

IamRunjiang的博客 1965

Python 爬虫教程:金融数据定向抓取(银行 + 投资网站数据结构化提取)

在当今数字化时代,金融数据的获取和分析对于投资者、分析师以及金融机构来说至关重要。Python 爬虫技术可以帮助我们高效地从各种网站上抓取金融数据,从而为投资决策、风险评估和市场分析提供支持。本文将详细介绍如何使用 Python 爬虫技术来定向抓取银行和投资网站的数据,并将其结构化提取,以便进一步分析和使用。

u014481728的博客 881

交叉编译环境搭建

环境搭建1、串口连接2、配置交叉编译器1、查看当前系统是否支持arm-linux-gcc2、在/usr/local创建一个文件夹为arm3、将arm-linux-gcc-4.3.2.bz2解压到/usr/local/arm目录下4、进入到 /usr/local/arm5、将上面得到的目录添加到环境变量PATH中6、重启.bashrc脚本7、ubuntu搭建nfs服务器8、ubuntu挂载到开发板上 将Cortex-AXX 开发板正确连接电脑 查看是否正确连接,并记住端口 右击此电脑 —>属性—>

兰天禄的博客 8538

目标跟踪与视频时序分析基础

两帧均有目标,却因快速移动导致检测框无重叠,仅靠交并比(IoU)无法维持身份关联。本文通过手算与纯Python实现最小跟踪流程,揭示IoU仅为位置线索,不能应对快速位移或遮挡。实验表明,即使目标真实存在,低重叠也会触发新编号。强调跟踪需结合运动预测、外观特征与阈值验证,避免误判。

Mr数据杨 2335

搭建交叉编译环境

4.1、搭建交叉编译环境4.1.1、概述交叉编译,就是用运行在一种计算机环境中的编译程序,去编译出在另外一种环境下运行的代码。具有这种能力的编译器就叫交叉编译器。换而言之,就是在一个平台上生成另一个平台上的可执行代码。这里所指的平台实际上包含了软/硬件两个方面的概念:操作系统(Operating System)和体系结构(Architecture)。同样是Linux系统,在不同体系结构的硬件平...

jandroid 265

DSShop移动商城网店系统 反序列化RCE漏洞复现

DSShop单店铺移动商城网店系统的getCartList方法的cart参数存在php反序列化漏洞,攻击者可以通过漏洞执行任意代码,获取服务器权限。

0xSec 1471

机器学习实战——疫情数据分析与预测

机器学习如何做到疫情可视化——疫情数据分析与预测实战 本文将带领大家爬取11个国家以及中国31个省(自治区、直辖市)在2022.0101-2022.06.19的新冠疫情数据。并且采用机器学习模型对2022.6.20-2022.6.30每一天的全国确诊人数、死亡人数、治愈人数进行预测,**做出疫情可视化图形并且求出最终的相关系数R2!...

拥有百余位万粉技术博主、200余位可合作代发博主,私域技术社群规模达千人,商务合作私信 10万+

创建基于 sysroot 的 linux arm64 交叉编译环境

sysroot 是交叉编译过程中使用的一个概念,指目标系统根文件系统中的一个目录结构。该目录结构包含编译器和链接器所需的所有目标系统头文件、库文件和其他必要文件。使用 sysroot 允许编译器和链接器在编译和链接阶段像在目标系统上运行一样进行编译和链接,从而生成可在目标系统上运行的可执行文件和库。头文件:包含目标系统 API 和库的声明。库文件:包含目标系统上可用的静态和动态链接库。其他文件:可能包括其他必要的配置文件和资源。隔离:它提供了一个隔离的环境,避免了本地系统和目标系统之间的冲突。

BlueShaw的专栏 3336

STM32入门教程:智能马桶盖控制

通过编写相应的代码,您可以根据需要实现其他功能,例如座圈温度调节和液晶显示屏显示等。初始化配置 首先,使用STM32CubeMX创建一个新的工程,并选择您所使用的STM32单片机型号。智能马桶盖是一种集成了多种功能的智能家居设备,通过控制芯片来实现自动冲水、座圈加热、座圈温度调节等功能。在本教程中,我们将使用STM32系列单片机来控制智能马桶盖的各个功能。以上代码演示了如何通过STM32的GPIO控制引脚来控制智能马桶盖的冲水和座圈加热功能。写代码 接下来,我们将通过编写代码来控制智能马桶盖的各个功能。

2401_85258012的博客 657

Linux交叉编译环境、Linux库创建和编译

Linux库创建和编译创建静态库ar命令创建静态库文件编译静态库创建共享库gcc命令编译共享库运行使用共享库的程序 创建静态库 ar命令 1、在Linux环境中,使用ar命令创建静态库文件,ar命令创建可供编译器读取的函数目标文件的存档文件。 ar命令格式: ar [-] (dmpqrtx) [abcfilNoPsSuvV] [membername] [count] archive files… ...

qq_24601427的博客 1211

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

创建 ARM Linux 交叉编译环境

创建 ARM Linux 交叉编译环境 一、准备工作               首先需要一台运行Linux操作系统的PC以完成我们的编译工作。        其次要准备如下一些源文件。          1、源文件准备          binutils-2.14.tar.gz          ftp://ftp.gnu.org/gnu/binutils/binu

zensui2008的专栏 521

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

在容器中创建交叉编译环境

对于需要依赖很多库的跨平台源码编译,交叉编译环境是比较难搭建的,主流的方法有两种,第一是使用已经编译好的交叉编译工具链,比如linaro提供的arm的工具链,这种方法对于编译一般的源码应该是足够了的,但是有些需要很多依赖库的大的项目就力不从心了,如果缺少库,手动添加是比较繁琐和困难的;第二种就是自己从源码编译交叉工具,这种就要求比较高了,如果你是高手,也不嫌麻烦那么再多的依赖你也能搞的定。 这里...

wujianyongw4的博客 1128

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

linux下nsis环境搭建,针对ARM创建交叉编译环境

01. 下载源文件和补丁,包括:>Linux内核源码及相应的补丁>binutils>gcc>glibc>glibc-linuxthreads这里可以尝试选择更新的版本。编译无法通过时,以此使用较旧的版本。几十发现新版本组合能够编译成功,仍然需要测试建立的工具链是否可以使用。02. 建立工作目录,设置环境变量,安装Linux头文件。03. 建立二进制工具包(binuti...

weixin_34146759的博客 628

ubuntu 单独安装 qtcreator 、交叉编译环境配置、创建新项目

MainWindow是具有菜单的窗口类,比如各种IDE上面的“文件”“编辑”“视图”“工具”“帮助”等菜单栏目;打开qtcreator,Tools(工具),Options(选项),Build & Run(构建和运行),Compilers(编译器),Add(添加),鼠标移至GCC,弹出两个选项:C & C++,先配置其一再配置另外一个,第一行名称自定义,“MY-GCC” & “MY-G++”,选择交叉编译器路径,ABI选择“arm-linux-generic-elf-64bit”,Apply(应用)。

m0_53566286的博客 1045

创建ARM Linux交叉编译环境实践

创建ARM Linux交叉编译环境实践 一、准备工作              首先需要一台运行Linux操作系统的PC以完成我们的编译工作。       其次要准备如下一些源文件。        1、源文件准备         binutils-2.14.tar.gz          ftp://ftp.gnu.org/gnu/binutils/binuti

528

用crosstool创建交叉编译环境

1. 准备资源        需要的软件包:binutils-2.15.tar.gz、gcc-3.4.5.tar.gz、glibc-2.3.6.tar.gz、glibc-linuxthreads-2.3.6.tar.gz、linux-libc-headers-2.6.12.0.tar.bz2。可通过下面的命令下载:        #wget -c ftp://ftp.gnu.org/gnu

道法自然 1332

GCC交叉编译环境的创建

在主机中编写代码、编译得到一个可执行文件,传输到ARM环境运行调试,出现bug返回linux修改代码编译再传输,这种在主机下开发,在开发板上运行的模式叫做交叉开发。

qq_52411900的博客 417

创建嵌入式Linux开发环境之交叉编译环境

上一次的内容我们主要讲了如何在如何搭建一个Linux 开发环境,这次我们就要根据不同的目标平台,建立自己的ARM-Linux的交叉编译环境。 搭建交叉编译环境的方法有很多,不同的体系结构、不同的操作内容甚至不同的内核版本,都会用到不同的交叉编译器。比如uboot,kernel,文

ppc001的专栏 800

linux 6.6 最新 gblic,创建ARM Linux交叉编译环境实践

一、准备工作首先需要一台运行Linux操作系统的PC以完成我们的编译工作。其次要准备如下一些源文件。binutils-2.14.tar.gz这个压缩包包含有ld,ar,as等一些产生或者处理二进制文件的工具。gcc-core-2.95.3.tar.gz这个压缩包是GCC的主体部分,GCC是GNU Compiler Collection的简称,顾名思义,它能够编译很多种高级语言,例如C、C++,Ja...

weixin_39556590的博客 472
上一篇: 制作ARM Linux交叉编译环境
下一篇: Linux 内核配置及编译简介
vcvbve
博客等级 码龄17年 5粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值