我正在编写一个应该在各种 SoCs 上运行的操作系统(例如:Xilinx Zync、Freescale QorIQ)。 我的问题是,并非所有提供的 IDE(由 Xilinx、Freescale 等提供)都提供相同的库(标准 C 和 POSIX 库)。 例如,CodeWarrior IDE 具有 timespec 结构,而 Xilinx 则没有。 另外,
sleep
在一些提供的库中实现,但我有自己的实现。
我希望我的代码独立于编译器(一些制造商提供多个 IDE 并使用不同的编译器)。
有什么建议吗?
我的建议:按照 POSIX 标准编写代码。如果供应商库无法满足 POSIX,请自行实现 POSIX 层。
让核心操作系统保持
#ifdef
自由,并将混乱放入条件编译的兼容层中。
简单(尽管实施时间较长)的解决方案是“不”依赖于供应商提供的库。 编写自己的库。 也许这可以通过一点点分层来完成。 例如,它们都提供 strlen()
。