arm-linux-gcc 4.4.2 的安装及version `GLIBCXX_3.4.9' not found 的解决

在RHEL 5平台上安装配置arm-linux-gcc
在linux平台上安装好的基础上,开始配置arm-linux-gcc,使其正常工作
 
一,安装前准备
 
1,下载并安装arm-linux-gcc
 
arm-linux-gcc  4.4.2的版本在http://download.csdn.net/download/yongan1006/3297959这里可以下载
 
下面的这个是ARM官方给的下载链接http://www.codesourcery.com/gnu_toolchains/arm/download.html,然后将HOST选择为IA32 GNU/Linux,点击下载就可以了。不过前缀为arm-2010.09-51-arm-none-eabi-i686-pc-linux-gnu而不是arm-linux-。
在友善之臂官方网站http://www.arm9.net/download.asp下载arm-linux-gcc4.4.3。
 
2,删除之前安装有旧版本
执行  [root@localhost ~]# rm -rf /opt/arm
 
3,对新版本arm-linux-gcc-4.4.3进行解压
(注意,如果我们加上了-C,那么就会自动解压到/usr/local/arm/这个目录下),但是友善之臂按照下列方式解压,不会解压到/usr/local/arm/目录下的,这是因为友善之臂把/usr/local/arm/目录修改成了 /opt/FriendlyARM/toolschain/,除非自己在把它修改过来
[root@localhost ~]# tar -ivxzf /smbroot/arm-linux-gcc-4.4.3.tar.gz  -C /
 
4,修改配置文件
将arm-linux-gcc添加到环境变量中,因为arm-linux-gcc的命令是在/usr/local/arm/4.4.3/bin下,其目的通过对全局变量绑定使之能够在任意一个目录下能够执行该命令。
打开设置文件
 
[root@localhost opt]# vi /etc/profile
 
在打开的文件的
 
# Path manipulation
if [ "$EUID" = "0" ]; then
        pathmunge /sbin
        pathmunge /usr/sbin
        pathmunge /usr/local/sbin
        pathmunge /usr/local/arm/4.4.3/bin
fi
或者在文件末尾添加
 
export PATH=$PATH:/usr/local/arm/4.4.3/bin
 
保存退出
 
5,立即使新的环境变量生效,不用重启电脑
[root@localhost opt]#  source /etc/profile

6,检查是否将路径加入到PATH:
[root@localhost opt]# echo $PATH
 
显示的内容中有/usr/local/arm/4.4.3/bin,说明已经将交叉编译器的路径加入PATH。至此,交叉编译环境安装完成。
 
7,测试是否安装成功
首先,执行find命令查询一下arm-linux-gcc的位置
 
[root@localhost ~]# find / -name arm-linux-gcc
 
/opt/arm/toolschain/4.4.3/bin/arm-linux-gcc
[root@localhost ~]#
可以看到arm-linux-gcc的位置与环境变量中设定的路径一致
 
接下来查询arm-linux-gcc的版本
 
[root@localhost bin]# arm-linux-gcc -v
Using built-in specs.
Target: arm-none-linux-gnueabi
Configured with: /opt/FriendlyARM/mini2440/build-toolschain/working/src/gcc-4.4.3/configure --build=i386-build_redhat-linux-gnu --host=i386-build_redhat-linux-gnu --target=arm-none-linux-gnueabi --prefix=/opt/FriendlyARM/toolschain/4.4.3 --with-sysroot=/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi//sys-root --enable-languages=c,c++ --disable-multilib --with-arch=armv4t --with-cpu=arm920t --with-tune=arm920t --with-float=soft --with-pkgversion=ctng-1.6.1 --disable-sjlj-exceptions --enable-__cxa_atexit --with-gmp=/opt/FriendlyARM/toolschain/4.4.3 --with-mpfr=/opt/FriendlyARM/toolschain/4.4.3 --with-ppl=/opt/FriendlyARM/toolschain/4.4.3 --with-cloog=/opt/FriendlyARM/toolschain/4.4.3 --with-mpc=/opt/FriendlyARM/toolschain/4.4.3 --with-local-prefix=/opt/FriendlyARM/toolschain/4.4.3/arm-none-linux-gnueabi//sys-root --disable-nls --enable-threads=posix --enable-symvers=gnu --enable-c99 --enable-long-long --enable-target-optspace
Thread model: posix
gcc version 4.4.3 (ctng-1.6.1) 
[root@localhost bin]#
可以看到arm-linux-gcc的版本号,至此,arm-linu-gcc已成功安装。
 
 二,测试
 
1,在终端中编写test.c测试程序
[root@localhost ~]# vi test.c
[root@localhost ~]# arm-linux-gcc test.c -o test
/opt/arm/toolschain/4.4.3/bin/../libexec/gcc/arm-none-linux-gnueabi/4.4.3/cc1: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by /opt/arm/toolschain/4.4.3/lib/libppl_c.so.2)
/opt/arm/toolschain/4.4.3/bin/../libexec/gcc/arm-none-linux-gnueabi/4.4.3/cc1: /usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.9' not found (required by /opt/arm/toolschain/4.4.3/lib/libppl.so.7)

[root@localhost ~]#
用以下命令查看
 
[root@localhost ~]# strings /usr/lib/libstdc++.so.6|grep GLIBCXX
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_FORCE_NEW
[root@localhost ~]# 
可以看到libstdc++.so.6的最高版是GLIBCXX_3.4.8,而不是GLIBCXX_3.4.9,因此需要对libstdc++.so.6进行升级
 
方法一,直接下载较高版本的库libstdc++.so.6.0.10,网址http://download.csdn.net/source/1670346
 
先删除libstdc++.so.6
 
[root@localhost ~]# rm /usr/lib/libstdc++.so.6
 
rm:是否删除 符号链接 “/usr/lib/libstdc++.so.6”? y
 
[root@localhost ~]#
然后将下载的libstdc++.so.6.0.10复制到/usr/lib/目录下面
 
[root@localhost ~]# cp /smbroot/libstdc++.so.6.0.10 /usr/lib/
 
[root@localhost ~]#
再建立符号链接
 
[root@localhost ~]# ln -s /usr/lib/libstdc++.so.6.0.10 /usr/lib/libstdc++.so.6
 
[root@localhost ~]#
检验是否替换完成
 
[root@localhost ~]#  strings /usr/lib/libstdc++.so.6|grep GLIBCXX
 
GLIBCXX_3.4
 
GLIBCXX_3.4.1
 
GLIBCXX_3.4.2
 
GLIBCXX_3.4.3
 
GLIBCXX_3.4.4
 
GLIBCXX_3.4.5
 
GLIBCXX_3.4.6
 
GLIBCXX_3.4.7
 
GLIBCXX_3.4.8
 
GLIBCXX_3.4.9
 
GLIBCXX_3.4.10
 
GLIBCXX_FORCE_NEW
 
GLIBCXX_DEBUG_MESSAGE_LENGTH
 
[root@localhost ~]#
重新测试交叉编译是否能用
 
[root@localhost ~]# arm-linux-gcc test.c -o test
 
[root@localhost ~]#
编译成功,执行
 
[root@localhost ~]# ./test
 
bash: ./test: cannot execute binary file
 
[root@localhost ~]
 
方法二,(参照网上搜来的办法,还没尝试)
 
下载最新版本glibc-2.13.tar.gz 包含libstdc++.so.6的库,
 
然后编译安装glibc 
 
 
下载glibc-linuxthreads
 
 
解压
 
tar -zxvf glibc-2.13.tar.gz
 
cd glibc-2.13
 
tar -zxvf ../glibc-linuxthreads-2.3.2.tar.gz
 
cd ..
 
./glibc-2.13/configure --prefix=/usr --disable-profile --enable-add-ons --libexecdir=/usr/lib --with-headers=/usr/include
 
make
 
make install
 
注意点:
 
1、要将glibc-linuxthreads解压到glibc目录下。
 
2、不能在glibc当前目录下运行configure。
 
 三、工具使用
1,编译工具arm-linux-gcc
 
例如arm-linux-gcc hello.c -o hello
 
2,反汇编工具arm-linux-gcc
例如arm-linux-objdump -D -S hello
 
3,elf文件查看工具arm-linux-readelf
 
arm-linux-readelf  -a hello (查库所有库)
 
arm-linux-readelf -d hello (查看动态链接库)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这个错误提示表明你当前的系统中没有安装 `arm-linux-gnueabi-gcc` 编译器。 如果你是在 Ubuntu 或者 Debian 系统中,可以通过以下命令安装: ``` sudo apt-get update sudo apt-get install gcc-arm-linux-gnueabi ``` 如果你使用的是其他 Linux 发行版,你需要搜索该发行版的软件仓库来找到对应的安装命令。 如果你是在 Windows 系统中,则需要安装适用于 Windows 的 `arm-linux-gnueabi-gcc` 编译器。你可以在网络上搜索相关的编译器并进行安装。或者你可以使用类 Unix 环境的工具链,如 Cygwin 或 MinGW 来进行交叉编译。 ### 回答2: "arm-linux-gnueabi-gcc command not found" 这个错误是由于系统中没有找到 arm-linux-gnueabi-gcc 编译器导致的。 arm-linux-gnueabi-gcc 是一个特定的 ARM 架构交叉编译器,用于编译针对 ARM 架构的程序。如果你在 Linux 系统上遇到了这个错误,说明你的系统中没有安装相应的交叉编译器。 要解决这个问题,你可以通过以下两种方式之一来安装 arm-linux-gnueabi-gcc: 1. 从软件包管理器中安装:首先,打开终端并运行适用于你的 Linux 发行版的包管理器命令(如 apt-get,yum,dnf 等)。然后使用命令搜索 arm-linux-gnueabi-gcc安装相应的软件包。例如,在 Ubuntu 上,你可以运行以下命令进行安装: ``` sudo apt-get update sudo apt-get install gcc-arm-linux-gnueabi ``` 2. 手动编译和安装:如果你无法通过包管理器安装 arm-linux-gnueabi-gcc,你可以尝试手动编译和安装。首先,下载 GNU 工具链中最新版本的 arm-linux-gnueabi-gcc。然后,解压下载的文件,并按照其中的说明进行编译和安装。 无论你选择的方法是哪一个,安装成功后,你应该能够在终端中通过输入 arm-linux-gnueabi-gcc 命令来验证安装是否成功。 ### 回答3: "arm-linux-gnueabi-gcc command not found"这个错误是由于您的系统上缺少了arm-linux-gnueabi-gcc编译器所引起的。 该编译器是用于交叉编译ARM架构的程序的。它将源代码编译成在ARM处理器上运行的可执行文件。 要解决这个问题,您可以按照以下步骤进行操作: 1. 确定您是否已经安装arm-linux-gnueabi-gcc。您可以在终端中使用命令"which arm-linux-gnueabi-gcc"来检查是否已安装。如果未安装,可以进行下一步。 2. 打开终端并运行以下命令来安装arm-linux-gnueabi-gcc: sudo apt-get install gcc-arm-linux-gnueabi 3. 如果上一步中的命令无法找到软件包,您可能需要先更新软件包列表: sudo apt-get update 4. 在安装过程中,您可能需要提供管理员密码以确认安装。 5. 安装完成后,您可以再次运行"which arm-linux-gnueabi-gcc"来确认已安装成功。如果成功安装,则应该能够看到该编译器的路径。 如果您无法通过包管理器安装arm-linux-gnueabi-gcc,也可以尝试从官方网站下载适用于您的系统的安装包,并按照其提供的说明进行安装。 希望以上解答对您有帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值