首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ubuntu:在交叉编译STM32 (Cortex-M3)时使用什么gcc?

Ubuntu:在交叉编译STM32 (Cortex-M3)时使用什么gcc?
EN

Stack Overflow用户
提问于 2009-10-01 08:27:39
回答 1查看 11K关注 0票数 9

我正在尝试从STM32 (Cortex-M3)开始,我的计划是从Ubuntu (9.04 / AMD64)开始工作。

首先,我得到了Olimex stm32 32-h 103头板和Olimex ARM-USB-OCD jtag,在此基础上,我可能会使用OpenOCD、gcc和Eclipse。

但是现在,我正在研究使用哪个版本的gcc,以及如何设置它,以便能够交叉编译代码。

似乎有一些arm项目,但我不知道从什么开始,谁能把我推向正确的方向吗?

谢谢约翰

Update:似乎有我想从码源得到的东西,但是他们似乎关注的是IA32而不是AMD64。

然而,在受支持的设备中,我发现了Cortex-M3。

  • ARM EABI,ARM M形仿真器-mcpu=cortex m~3 -mthumb

Update:有可能在AMD64上安装IA32,所以标记的答案可能已经过时了。

更新:找到关于Cortex-M3交叉编译的链接。

  • cortex.html
  • http://fanplastic.org/gcc-for-arm-eabi/
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-10-01 19:52:27

因为这个答案变得有点“不可读”,我用这个信息创建了一个页面。

  • http://fun-tech.se/stm32/gcc/index.php

这是一个基于这两个指南的免费解释,但我不得不更改版本并应用一些补丁来使其工作。

  • 皮质
  • http://www.esden.net/blog/2009/02/26/how-to-build-arm-gnu-gcc-toolchain-for-mac-os-x/

首先是一些基本的东西

代码语言:javascript
复制
sudo apt-get install flex bison libgmp3-dev libmpfr-dev autoconf texinfo build-essential

然后,我创建了一个存储工具链的地方(将cj.users更改为对您有好处的东西)。

代码语言:javascript
复制
export TOOLPATH=/usr/local/cross-cortex-m3
sudo mkdir /usr/local/cross-cortex-m3
sudo chown cj.users /usr/local/cross-cortex-m3

宾蒂尔斯

代码语言:javascript
复制
wget http://ftp.gnu.org/gnu/binutils/binutils-2.19.tar.bz2
tar -xvjf binutils-2.19.tar.bz2
cd binutils-2.19
mkdir build
cd build
../configure --target=arm-none-eabi --prefix=$TOOLPATH --enable-interwork --enable-multilib --with-gnu-as --with-gnu-ld --disable-nls

根据此信息bug.cgi?id=7026 / http://sourceware.org/bugzilla/attachment.cgi?id=3058&action=view将补丁应用于tc-arm.c

代码语言:javascript
复制
vi ../gas/config/tc-arm.c


make 
make install
export PATH=${TOOLPATH}/bin:$PATH
cd ../..

gcc

代码语言:javascript
复制
wget ftp://ftp.sunet.se/pub/gnu/gcc/releases/gcc-4.3.4/gcc-4.3.4.tar.bz2
tar -xvjf gcc-4.3.4.tar.bz2
cd gcc-4.3.4
mkdir build
cd build
../configure --target=arm-none-eabi --prefix=$TOOLPATH --enable-interwork --enable-multilib --enable-languages="c,c++" --with-newlib --without-headers --disable-shared --with-gnu-as --with-gnu-ld
make all-gcc
make install-gcc
cd ../..

纽利卜

代码语言:javascript
复制
wget ftp://sources.redhat.com/pub/newlib/newlib-1.17.0.tar.gz
wget http://www.esden.net/content/embedded/newlib-1.14.0-missing-makeinfo.patch
tar -xvzf newlib-1.17.0.tar.gz
cd newlib-1.17.0

然后我想用这样的方法来应用这个补丁(但是它没有工作)

代码语言:javascript
复制
patch -p1 -i ../newlib-1.14.0-missing-makeinfo.patch

所以我手动打开它,并根据补丁编辑了第6651行。

代码语言:javascript
复制
vi configure

mkdir build
cd build
../configure --target=arm-none-eabi --prefix=$TOOLPATH --enable-interwork --disable-newlib-supplied-syscalls --with-gnu-ld --with-gnu-as --disable-shared
make CFLAGS_FOR_TARGET="-ffunction-sections -fdata-sections -DPREFER_SIZE_OVER_SPEED -D__OPTIMIZE_SIZE__ -Os -fomit-frame-pointer -mcpu=cortex-m3 -mthumb -D__thumb2__ -D__BUFSIZ__=256" CCASFLAGS="-mcpu=cortex-m3 -mthumb -D__thumb2__"
make install
cd ../..

更多gcc

代码语言:javascript
复制
cd gcc-4.3.4/build
make CFLAGS="-mcpu=cortex-m3 -mthumb" CXXFLAGS="-mcpu=cortex-m3 -mthumb" LIBCXXFLAGS="-mcpu=cortex-m3 -mthumb" all
make install

总结

现在我给我的~/..bashrc添加了一些路径

代码语言:javascript
复制
#STM32 gcc...
export TOOLPATH=/usr/local/cross-cortex-m3
export PATH=${TOOLPATH}/bin:$PATH

我应该做好下一步准备..。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1502623

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档