当前位置:首页 » 编程软件 » 在linux安装交叉编译器

在linux安装交叉编译器

发布时间: 2022-02-14 17:14:12

‘壹’ linux交叉编译

这种特殊用的编译器放在任何地方都可以。
只要能和本机的编译器分开就行了。

不过有的交叉编译器限制目录的,因为里面的程序是使用绝对路径来调用功能的,错了地方会导致调用出错,如果调用了本机的东西,就全乱了……

至于 command not found 。就要看你的交叉编译器目录的设置了。按你现在的目录,一般 gcc 在/opt/host/armv41/arm-unknown-linux/bin 里面。并不是真的全在一个 bin 里面(这里面只有 binutils 的东西)。

当然也不绝对。都要具体情况具体分析了。

‘贰’ 如何在linux虚拟机里安装交叉编译

安装Arm-Linux交叉编译器正确的方法:
首先我用的是天嵌自带的交叉编译器EABI-4.3.3_EmbedSky_20100610.tar.bz2,
1. 首先建一个存放交叉编译器的目录,我建的目录的绝对路径是:/opt/TQ (TQ就是我建的目录)
2. 解压EABI-4.3.3_EmbedSky_20100610.tar.bz2:
tar xjvf EABI-4.3.3_EmbedSky_20100610.tar.bz2

该文件解压后,就会在TQ这个目录中生成两个目录:opt,usr;
3. 添加环境变量 :
在/etc/profile中添加
# Path manipulation
if [ "$EUID" = "0" ]; then
pathmunge /sbin
pathmunge /usr/sbin
pathmunge /usr/local/sbin
pathmunge /opt/TQ/opt/EmbedSky/4.3.3/bin/
fi
添加完后 source /etc/profile 使他生效;
4. 在控制台执行以下命令:
cp /opt/TQ/opt/EmbedSky/4.3.3/bin /usr/local/arm

总结:第3步和第4步这两步少了一步就会出现以下错误:
arm-none-linux-gnueabi-gcc: error trying to exec 'cc1': execvp: No such file or directory

经验:若在解压时 用下面的命令:
tar xjvf EABI-4.3.3_EmbedSky_20100610.tar.bz2 -C/

就可以省去第四步
-C / :的意识是解压到指定目录,这里指根目录,由于该压缩包内部的目录结构本身包含usr/local/arm,所以解压到根目录实际上就是把文件解压到/usr/local/arm文件夹下。

‘叁’ 在linux中安装交叉编译器时的解包问题

具体操作步骤如下:
1. 下载
在GCC网站上( 3.3.1。可供下载的文件一般有两种形式:gcc-3.3.1.tar.gz和 2,只是压缩格式不一样,内容完全一致,下载其中一种即可。
2. 解压缩
根据压缩格式,选择下面相应的一种方式解包(以下的“%”表示命令行提示符):
% tar xzvf gcc-3.3.1.tar.gz
或者
% tar jxvf 2
新生成的gcc-3.3.1这个目录被称为源目录,用${srcdir}表示它。以后在出现${srcdir}的地方,应该用真实的路径来替换它。用pwd命令可以查看当前路径。
在${srcdir}/INSTALL目录下有详细的GCC安装说明,可用浏览器打开 ml阅读。
3. 建立目标目录
目标目录(用${objdir}表示)是用来存放编译结果的地方。GCC建议编译后的文件不要放在源目录${srcdir]中(虽然这样做也可以),最好单独存放在另外一个目录中,而且不能是${srcdir}的子目录。
例如,可以这样建立一个叫 gcc-build 的目标目录(与源目录${srcdir}是同级目录):

% mkdir gcc-build
% cd gcc-build
以下的操作主要是在目标目录 ${objdir} 下进行。
4. 配置
配置的目的是决定将GCC编译器安装到什么地方(${destdir}),支持什么语言以及指定其它一些选项等。其中,${destdir}不能与${objdir}或${srcdir}目录相同。
配置是通过执行${srcdir}下的configure来完成的。其命令格式为(记得用你的真实路径替换${destdir}):
% ${srcdir}/configure --prefix=${destdir} [其它选项]
例如,如果想将GCC 3.3.1安装到/usr/local/gcc-3.3.1目录下,则${destdir}就表示这个路径。
% ../gcc-3.3.1/configure --prefix=/usr/local/gcc-3.3.1 --enable-threads=posix --disable-checking --enable--long-long --host=i386-redhat-linux --with-system-zlib --enable-languages=c,c++,java
将GCC安装在/usr/local/gcc-3.3.1目录下,支持C/C++和JAVA语言,其它选项参见GCC提供的帮助说明。
5. 编译
% make
这是一个漫长的过程。

6. 安装
执行下面的命令将编译好的库文件等拷贝到${destdir}目录中(根据你设定的路径,可能需要管理员的权限):
% make install
至此,GCC 3.3.1安装过程就完成了。
6. 其它设置
GCC 3.3.1的所有文件,包括命令文件(如gcc、g++)、库文件等都在${destdir}目录下分别存放,如命令文件放在bin目录下、库文件在lib下、头文件在include下等。由于命令文件和库文件所在的目录还没有包含在相应的搜索路径内,所以必须要作适当的设置之后编译器才能顺利地找到并使用它们。
6.1 gcc、g++、gcj的设置
要想使用GCC 3.3.1的gcc等命令,简单的方法就是把它的路径${destdir}/bin放在环境变量PATH中。我不用这种方式,而是用符号连接的方式实现,这样做的好处是我仍然可以使用系统上原来的旧版本的GCC编译器。
首先,查看原来的gcc所在的路径:
% which gcc
在系统上,上述命令显示:/usr/bin/gcc。因此,原来的gcc命令在/usr/bin目录下。可以把GCC 3.3.1中的gcc、g++、gcj等命令在/usr/bin目录下分别做一个符号连接:
% cd /usr/bin
% ln -s ${destdir}/bin/gcc gcc33
% ln -s ${destdir}/bin/g++ g++33
% ln -s ${destdir}/bin/gcj gcj33
这样,就可以分别使用gcc33、g++33、gcj33来调用GCC 3.3.0的gcc、g++、gcj完成对C、C++、JAVA程序的编译了。同时,仍然能够使用旧版本的GCC编译器中的gcc、g++等命令。

‘肆’ 如何在linux中运行交叉编译的程序

这里需要注意的是所谓平台,实际上包含两个概念:
体系结构(Architecture)、操作系统(Operating
System)。同一个体系结构可以运行不同的操作系统;同样,同一个操作系统也可以在不同的体系结构上运行。
方法及步骤:
1、搭建交叉编译环境
选...

‘伍’ Linux系统中如何安装交叉编译器

交叉编译器通常以 arm-none-linux-gnueabi.tar.bz2 这样的名称发布(不同厂家的不同开发平台,交叉编译工具链的实际名称可能有所差别,请以实际为准),解压命令:
vmuser@Linux-host: ~$ tar xjvf arm-none-linux-gnueabi.tar.bz2
如果希望解压到一个指定的目录,可以先将 arm-none-linux-gnueabi.tar.bz2 压缩包复制到目标目录,然后进入目标目录再运行解压命令,也可以在任意目录解压,通过-C 指定目标目录。假定希望解压到“/home/ctools/”目录,则命令如下:
vmuser@Linux-host: ~$ tar xjvf arm-none-linux-gnueabi.tar.bz2 -C /home/ctools/

在终端中添加环境变量,需要每次打开终端都设置,也很麻烦。可以考虑将设置的过程添加到系统配置文件中。/etc/profile 是系统全局的配置文件,在该文件中设置交叉编译器的路径,能够让登录本机的全部用户都可以使用这个编译器。
打开终端,输入“sudo vi /etc/profile”命令,打开/etc/profile 文件,在文件末尾添加:
export PATH=$PATH:/home/ctools/arm-2011.03/bin/
然后输入“. /etc/profile”(点+空格+文件名),执行 profile 文件,使刚才的改动生效。如果没有书写错误,此时打开终端,输入 arm-none-linux-gnueabi-,然后按键盘 TAB 键,同样可以看到很多 arm-none-linux-gnueabi-开头的命令。
这些周立功那边很多的,不知道你有没去看过。

‘陆’ 如何建立Linux下的ARM交叉编译环境

  1. 首先安装交叉编译器,网络“arm-linux-gcc下载”就可以下载一个编译器压缩包。

  2. 把压缩包放到linux系统中,解压,这样就算安装好了交叉编译器。

  3. 设置编译器环境变量,具体方式网络。如打开 /etc/bash.bashrc,添加刚才安装的编译器路径 export PATH=/home/。。。/4.4.3/bin:$PATH。这样是为了方便使用,用arm-linux-gcc即可,不然既要带全路径/home/....../bin/arm-linux-gcc,这样不方便使用。

  4. 编译c文件。和gcc编译相似,把gcc用arm-linu-gcc代替就是了。编译出来的就可以放到arm上运行了。

‘柒’ 为什么交叉编译器要安装在Linux系统下

因为要用到的交叉编译器是运行在linux操作系统中的

‘捌’ 如何使Linux在交叉编译工具安装配置并立即生效

第一、解压你下载的ARM-LINUX-GCC交叉编译工具
#tar xvzf arm-linux-gcc-4.3.2.tar.gz -C /
(需要注意的是,在大写字母后面有一个空格)
第二、利用vi编辑器打开/etc/profile文件,并在下面的位置中添加一句话:pathmunge /opt/FriendlyARM//opt/FriendlyARM/toolschain/4.4.3/bin
(注意:该处的/opt/FriendlyARM//opt/FriendlyARM/toolschain/4.4.3/bin根据各人的交叉编译工具解压后所存放的位置而不同)
#vim /etc/profile
# Path manipulation
if [ $EUID = 0 ]; then
pathmunge /sbin
pathmunge /usr/sbin
pathmunge /usr/local/sbin
pathmunge /opt/FriendlyARM//opt/FriendlyARM/toolschain/4.4.3/binfi第三、执行下列的命令即可是刚才的配置生效
#source /etc/profile
最后你就可以检测自己的交叉编译环境是否安装成功。可以输入下面的命令来检查:

‘玖’ 如何安装arm-liunx交叉编译环境

sh ./arm-elf-tools-20040427.sh安装
----------------------------------------------
一、准备工作

首先需要一台运行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

这样我们在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

二、开始创建

1、 确定几个系统变量

cd ../../

export TARGET=arm-linux

export PREFIX=../arm/tool-chain

export TARGET_PREFIX=$PREFIX/$TARGET

export KERNEL_SOURCE_LOCATION=../arm/kernel/linux-2.4.21

export PATH=$PREFIX/bin:$PATH

几个系统变量经常要用到,TARGET定义了目标机,PREFIX是工具链的安装目录,KERNEL_SOURCE_LOCATION是内核文件位置。

TARGET这个变量对于ARM体系的目标机来说取值为arm-linux,对于其他体系结构的机器如ppc,mips的取值的详细清单可以参见glibc目录下的INSTALL文档.

2、 创建binutils

运行如下命令来创建binutils

cd ./build-dir/build-binutils

configure ../../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文件使

ARCH = arm

CROSS_COMPILE=arm-linux-

make menuconfig

在System Types中选择正确的硬件类型

make dep

之后执行如下操作

mkdir $TARGET_PREFIX/include

cp dR $KERNEL_SOURCE_LOCATION/include/arm-asm \

RGET_PREFIX/include/asm

cp dR $KERNEL_SOURCE_LOCATION/include/linux \

RGET_PREFIX/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=$PREFIX \

--with-headers=$ERNEL_SOURCE_LOCATION/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

这时$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

将glibc库安装完之后,我们要到$TARGET_PREFIX/lib这个目录下修改libc.so文件,将其中

GROUP(/lib/libc.so.6 /lib/libc_noshared.a)

这个命令脚本中的/lib 的绝对路径去掉, 也就是改为如下的形式

GROUP(libc.so.6 libc_noshared.a)

这样下一步创建完整的编译器时,才不至于导致错误.

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的交叉编译工具。

------------------------------------------------------
可以去www.arm16.com看看

热点内容
二级c语言技巧 发布:2025-01-13 07:54:37 浏览:2
自动充值脚本 发布:2025-01-13 07:48:02 浏览:19
越容易压缩 发布:2025-01-13 07:37:37 浏览:557
ecstore数据库 发布:2025-01-13 07:29:43 浏览:296
手机设置密码忘记了怎么解开 发布:2025-01-13 07:28:29 浏览:21
存储卡交流 发布:2025-01-13 07:16:06 浏览:984
php字符串浮点数 发布:2025-01-13 07:15:28 浏览:999
python排序cmp 发布:2025-01-13 07:09:04 浏览:73
云脚本精灵 发布:2025-01-13 07:03:27 浏览:619
高维访问 发布:2025-01-13 07:03:23 浏览:976