3

我需要编写一个 C++ 应用程序才能在嵌入式 Linux 设置(DMP Vortex86DX 处理器)上运行。供应商提供了一个最小的 linux 安装映像,可以安装到板上并包含适当的硬件驱动程序。我的问题是由我之前关于在特定内核上编写 Linux 软件以在不同内核上运行的问题的答案引起的。在编写软件以确保兼容性时,我真的不知道从哪里开始。

我本能的做法是在嵌入式设备和我的桌面开发机器上安装相同版本的 g++,在开发机器上编写应用程序,复制到板上并在那里编译。但这似乎很疯狂,我很难相信这就是嵌入式软件的开发方式。关于我上一个问题的答案,有没有一种方法可以简单地在我的桌面上构建,但使用嵌入式设备上存在的 glibc 版本 - 如果是这样,如何强制链接到特定版本?或者是否可以静态构建所有内容,以便应用程序不会动态链接到任何内容(我怀疑这是可能的)。

我完全是嵌入式开发的新手,除非我能获得一些好的建议或资源,否则我可以预见数月的挫败感。无论它们看起来多么简单或微不足道,任何关于从哪里开始的指示或建议都会非常感激 - 我真的是从最底层开始嵌入的东西。

4

1 回答 1

3

好的,鉴于Vortex86SX/DX/MX声称与 x86 兼容,一小部分编译器开关应该使您能够为您的目标机器编译代码:-m32确保 32 位代码,并且没有-march针对特定 CPU 的开关。

然后你需要链接你的代码。只要您不使用任何花哨但简单的已建立 glibc 函数,我希望 ABI 在您的开发机器和嵌入式系统上是相同的。换句话说,您针对您的主机库进行编译,将二进制文件复制到嵌入式系统,它应该只需使用那里可用的库即可运行。

如果 X-Linux 要使用其他一些 libc,例如uclibc或类似的,那么您的主机上需要一个交叉编译器。在这方面我对 Ubuntu 几乎没有经验,但我知道sys-devel/crossdevGentoo linux 的软件包使交叉编译器的生成非常容易。这既可以用于不同的架构(在您的情况下不需要),也可以用于不同的库(例如 uclibc)。

我会说只是尝试复制二进制文件,如果在那里遇到任何问题,请报告。

于 2012-07-04T14:39:51.507 回答