我正在为没有操作系统的定制PowerPC平台编译newlib。通过阅读网上的信息,我意识到我需要在libgloss的一个子目录中实现存根函数。
我的困惑是,当我编译newlib时,将如何处理这个问题。是否是<newplatform>
参数的最后一部分来配置,例如--target
?
如果是这样,那么我想在编译binutils和gcc时应该使用相同的powerpc-ibm-<newplatform>
?
谢谢你
最佳答案
我也移植了newlib和GCC。我记得我不需要做太多的事情来让newlib工作(移植GCC、gas和libbfd是大部分工作)。
只需调整一些关于浮点数的文件,关闭一些POSIX/SomeOtherStandard标志,使其不使用一些更复杂的函数,并为加载并将寄存器状态存储到跳转缓冲区中的longjmp
/setjmp
编写支持代码。但您当然必须使用--target
告诉它目标,这样它就使用了正确的机器子目录和其他东西。我记得我必须在configure.sub
中添加一些小代码,让它知道我的目标,并打印出完整的配置trible(cpu制造商os或类似的操作系统)。刚刚发现我还需要编辑一个名为configure.host
的文件,它为您的目标设置了一些选项(例如,操作系统是否处理由raise
引起的信号,或者newlib本身是否应该模拟处理)。
我使用了Anthony Green的this blog作为指导,在这里他描述了GCC、newlib和binutils的移植。我认为这是一个伟大的来源时,你必须自己做。总之,读起来很有趣。编译和运行一些有趣的C程序总共花了2个月的时间,这些程序只需要独立的C(带有写入模拟器终端的虚拟读/写函数)。
所以我认为工作量是可以控制的。让我几乎发疯的是libgloss
的构建脚本。我当然是迷失在那些autoconf魔法中了:)不管怎样,祝你好运!:)
关于c - 在为定制平台构建newlib时指示libgloss机器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/734070/