在ubuntu上安装Sourcery G++工具链(GNU ARM)

本文介绍了一款支持Cortex-M3的免费GNU ARM编译器——Sourcery G++. 提供了在Windows和Linux环境下安装此跨平台工具链的详细步骤,并解决了Ubuntu环境下安装兼容性问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在网上找了找支持Cortex-M3Toolchain,发现网上许多同行都在SourceryG++用这个免费的GNU ARM编译器,其它比较“主流”的IDE(主要是在Windows下)还没有更新到可以支持CM3。下载地址:http://www.codesourcery.com/sgpp/lite/arm/portal/subscription3057
这是一个跨平台的工具链,在Windows下也可以安装使用,它并不依赖于Cygwin而直接可用。安装好后在CMD中就可以像在Linux般爽快了。(试试ls这个命令,你就会知道,原来这个ToolchainWindows带了的不止是一个编译器这么简单)

windows下安装很简单,下载了EXE可执行文件后直接双击就差不多可以了。而在Linux,也很简单,输入几个命令就可以了:)

其实官方文档上说Linux下的安装文件也是图形化的,但因为Ubuntu(及其祖宗Debian)使用的终端是DASH,不同于其它发行版本,而安装文件与之不兼容。所以要先重新配置一下。

可以在终端上输入

    dmg@ming:~$ ls -l /bin/sh

    lrwxrwxrwx 1 root root 4 2008-09-13 13:24 /bin/sh -> dash

看到结果了吧,dash。将这个dash设置为最低优先级。

    dmg@ming:~$ sudo dpkg-reconfigure -plow dash

    Install as /bin/sh? No

这样算完成了,重新看一下ls -l /bin/sh就可以知道已经指向bash了。这时只要进入你下载的那个Bin文件安装文件目录中,执行

    /bin/sh arm-2009q1-176-arm-none-linux-gnueabi

这个时候出来了就是图形化的安装文件啦,其实是用JAVA做的是吧。(不知道是不是真的,我也是猜的)。贴张图吧。



文档上说已经把环境帮忙设置好,就是在home文件夹下修改了.bash_profile中的PATH,如我这里是这样的了PATH="/home/dmg/CodeSourcery/Sourcery_G++_Lite/bin:${PATH}",不过不起作用,在终端上使用的时候依然是找不到,所以我只好自己在已知的PATH中加入这些文件的软链接。

    即sudo cp -s * /usr/yrbins/

这里假设你在Sourecery_G++_Lite的bin文件夹下面,这里的的yrbins是我自己特别建立的文件夹,当然也可以直接放到/usr/bin中,就免得独立建一个文件夹来存放这些链接了。

然后在home下自己的主目录下修改.bashrc文件,在最后一行加入一个export PATH=$PATH:/usr/yrbins并输入

    source .bashrc

一下,就可以在终端下使用这个Toolchain啦。

<think>好的,用户想验证Sourcery G++工具链是否正确安装。首先,我需要回忆相关的步骤。通常,验证工具链安装是否正确的方法包括检查编译器路径、版本信息,以及简单的编译测试。 首先,检查环境变量是否设置正确。比如,用户可能需要确认PATH变量是否包含工具链的bin目录。可以使用echo $PATH命令查看,或者直接输入编译器命令如arm-none-linux-gnueabi-gcc -v来查看版本信息。如果提示命令未找到,说明路径可能没有配置好,需要手动添加或者检查安装路径是否正确。 接下来,考虑编译一个简单的程序进行测试。比如,编写一个hello.c文件,用交叉编译器编译,然后检查生成的可执行文件是否针对目标架构。使用file命令可以查看文件类型,确认是否是ARM架构的。这一步很关键,因为即使编译器存在,如果生成的二进制文件不正确,说明工具链可能有问题或者配置错误。 另外,用户提供的引用中提到了一些配置方法,比如设置CMAKE_C_COMPILER和CMAKE_CXX_COMPILER,这可能涉及到在CMake项目中指定交叉编译器。如果用户是在使用Buildroot或者其他构建系统,可能需要检查工具链配置是否正确,比如是否选择了外部工具链,并正确指定了路径。引用[1]和[4]提到了相关配置,可以提醒用户检查这些设置。 还要注意工具链的版本和依赖库的兼容性。引用[5]提到依赖库需要按顺序编译并确保版本一致,这可能影响工具链的使用。如果用户遇到问题,可能需要检查是否有库缺失或版本冲突。 另外,用户可能没有提到但需要注意的地方包括检查工具链的许可协议是否接受,某些工具链可能需要额外的步骤激活。此外,如果工具链是通过SDK安装的,可能需要确认SDK的安装路径是否正确,是否有权限访问。 总结下来,验证步骤大致分为环境检查、版本验证、编译测试和构建系统配置检查。需要逐步引导用户进行这些操作,确保每个环节都正确无误。</think>### 验证 Sourcery G++ 工具链安装状态的方法 1. **检查工具链路径与环境变量** - 确认工具链安装路径是否已添加到系统环境变量 `PATH` 中: ```bash echo $PATH | grep "your_toolchain_bin_path" ``` 例如,若工具链安装在 `/opt/sourcery-g++/bin`,需确保该路径存在[^3][^4]。 - 验证编译器是否能被系统识别: ```bash arm-none-linux-gnueabi-gcc --version # 根据实际工具链前缀调整 ``` 若输出类似 `Sourcery G++ Lite x.x.x` 的版本信息,则表明编译器已正确安装[^1]。 2. **执行简单交叉编译测试** - 编写测试程序 `hello.c`: ```c #include <stdio.h> int main() { printf("Hello ARM!\n"); return 0; } ``` - 使用工具链编译: ```bash arm-none-linux-gnueabi-gcc hello.c -o hello_arm ``` - 检查生成的可执行文件架构: ```bash file hello_arm ``` 正确输出应包含 `ARM` 或 `ELF 32-bit LSB executable, ARM`。 3. **验证工具链与构建系统集成** - 若使用 CMake,需检查工具链文件配置(如 `toolchain.cmake`): ```cmake set(CMAKE_C_COMPILER arm-none-linux-gnueabi-gcc) set(CMAKE_CXX_COMPILER arm-none-linux-gnueabi-g++) ``` 通过 `cmake -DCMAKE_TOOLCHAIN_FILE=toolchain.cmake ..` 测试是否能正确生成 Makefile。 4. **检查依赖库兼容性** - 若涉及动态链接库,使用工具链的 `readelf` 工具验证依赖: ```bash arm-none-linux-gnueabi-readelf -d hello_arm | grep "Shared library" ``` 确保依赖的库路径与目标系统一致(如 `/lib` 或自定义路径)[^5]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值