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

Ubuntu:STM32(Cortex-M3)交叉编译时使用什么gcc?,gcc,ubuntu,arm,cortex-m3,stm32,Gcc,Ubuntu,Arm,Cortex M3,Stm32,我正在尝试开始使用STM32(Cortex-M3),我的计划是从Ubuntu(9.04/AMD64)开始使用 首先,我得到了标题板和jtag,在此基础上,我可能会使用OpenOCD、gcc和Eclipse 但是现在我正在研究使用什么版本的gcc,以及如何设置它以能够交叉编译代码 似乎有一些arm项目,但我不知道从什么开始, 有人能把我推到正确的方向吗 谢谢 约翰 更新: 似乎有我想要的东西, 但他们似乎关注IA32,而不是AMD64 然而,在支持的设备中,我发现Cortex-M3 ARM E

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

首先,我得到了标题板和jtag,在此基础上,我可能会使用OpenOCD、gcc和Eclipse

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

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

谢谢 约翰


更新: 似乎有我想要的东西, 但他们似乎关注IA32,而不是AMD64

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

  • ARM EABI,ARM M剖面模拟器-mcpu=cortex-m3-mthumb
更新: 有可能在AMD64上安装IA32, 因此,也许标记的答案已经过时了

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


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



      这是一个基于这两个指南的免费解释,但我必须更改版本并应用一些补丁才能使其正常工作

      首先是一些基本的东西 然后,我创建了一个存储工具链的地方(将cj.users更改为对您有利的内容)

      比努蒂尔斯 根据此信息/

      海湾合作委员会 纽利布 然后我想用类似这样的东西应用补丁(但它不起作用)

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

      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 总结 现在,我刚刚向我的~/.bashrc添加了一些路径

      #STM32 gcc...
      export TOOLPATH=/usr/local/cross-cortex-m3
      export PATH=${TOOLPATH}/bin:$PATH
      

      我应该为下一步做好准备…

      请看Buildroot适用于更大的arm:s,如ARM9、ARM11、Cortex-A8(如果您想在其上运行Linux)。但对于MCU风格的Cortex-M3(更像是ARM7)就不是这样了。不过还是要谢谢你。在我们重组了eLua网站之后,你在那里的链接不再正确了,你可以在这里找到相同的页面:仅供参考,我有一些单独的说明,用于在OS X上构建64位CodeSourcery的工具链。让它们也在Linux上工作可能不太难:同样值得注意的是,由于Ubuntu 64位安装可以运行32位应用程序,CodeSourcery的工具在Ubuntu/AMD64安装上运行应该没有问题。(免责声明:我是CodeSourcery的员工。)感谢您在AMD64上的注释,我用信息更新了问题。非常感谢您发布此消息。多年来,我一直在努力研究如何为Cortex M3芯片制造。我仔细研究了我以前最喜欢的问题,发现了这个问题,我将把它作为我所有的参考资料。再次感谢!
      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
      
      vi ../gas/config/tc-arm.c
      
      
      make 
      make install
      export PATH=${TOOLPATH}/bin:$PATH
      cd ../..
      
      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 ../..
      
      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
      
      patch -p1 -i ../newlib-1.14.0-missing-makeinfo.patch
      
      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 ../..
      
      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
      
      #STM32 gcc...
      export TOOLPATH=/usr/local/cross-cortex-m3
      export PATH=${TOOLPATH}/bin:$PATH