在为定制平台构建newlib时指示libgloss机器

时间:2009-04-09 12:51:06

标签: c embedded cross-compiling newlib

我正在为没有操作系统的定制PowerPC平台编译newlib。在网上读取信息我意识到我需要在libgloss的<newplatform>子目录中实现存根函数。

我的困惑是在编译newlib时如何获取它。它是--target参数的最后一部分,用于配置,例如powerpc-ibm-<newplatform>

如果是这种情况,那么我想在编译binutils和gcc时我应该使用相同的--target

谢谢

2 个答案:

答案 0 :(得分:1)

我也自己移植了newlib和GCC。我记得我没有做太多的事情来使newlib工作(移植GCC,gas和libbfd是大部分工作)。

只需要调整一些有关浮点数的文件,关闭一些POSIX / SomeOtherStandard标志,这些标志使得它不使用更复杂的函数并编写加载和存储的longjmp / setjmp的支持代码将状态注册到跳转缓冲区。但你必须使用--target告诉它目标,所以它使用正确的机器子目录和诸如此类的东西。我记得我必须向configure.sub添加小代码以使其了解我的目标并打印完整的配置trible(cpu-manufacturer-os或类似的)。刚刚发现我必须编辑一个名为configure.host的文件,它为你的目标设置一些选项(例如,操作系统是否处理raise上升的信号,或者newlib本身是否应该模拟处理)。

我使用了Anthony Green的this blog作为指导,他描述了GCC,newlib和binutils的移植。我认为,当你必须自己做的时候,这是一个很好的来源。无论如何有趣的阅读。编译和运行一些有趣的C程序总共需要2个月,这些程序只需要独立的C(带有写入模拟器终端的虚拟读/写功能)。

所以我认为工作量肯定是可以控制的。使我几乎疯狂的是libgloss的构建脚本。我当然迷失在那些autoconf魔法中:)无论如何,祝你好运! :)

答案 1 :(得分:0)

查看Porting Newlib

引用:

  

我决定在尝试将newlib移植到我自己的操作系统之后的一周非常困难之后,我会编写一个教程,概述移植newlib的要求以及如何实际操作。我假设你已经可以从某个地方加载二进制文件,并且这些二进制文件是编译的C代码。我还假设您已经设置了系统调用接口。干嘛要等?让我们开始吧!