开发C ++应用程序以在embedded式Linux设置上运行

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

我本能的方法是在embedded式设备和桌面开发机器上安装相同版本的g ++,在开发环境中编写应用程序,复制到开发板并在那里编译。 虽然这看起来很疯狂,但是我很难相信这是如何开发embedded式软件的。 关于我以前的问题的答案,有没有一种方法可以简单地在我的桌面上构build,但使用embedded式设备上存在的glibc版本 – 如果是这样的话,可以如何实现与特定版本的链接? 或者是有可能build立一切静态,使应用程序不链接到任何dynamic(我怀疑这是可能的)。

我是embedded式开发的总新手,除非我能掌握一些好的build议或资源,否则预计会有几个月的挫折。 任何指针或从哪里开始的build议都会非常感激地收到,无论它们看起来多么简单或微不足道 – 我真的是从embedded式的东西开始。

好的,鉴于Vortex86SX / DX / MX声称是x86兼容的,一-m32编译器开关应该使你能够编译你的目标机器的代码: -m32以确保32位代码,并且没有通过开关针对特定中央处理器。

那么你需要链接你的代码。 只要你不使用任何奇特的,但简单的建立glibc功能,我希望你的开发机器和嵌入式系统的ABI是相同的。 换句话说,您可以针对主机库进行编译,将二进制文件复制到嵌入式系统中,并且只需使用那里提供的库即可运行。

如果X-Linux使用其他libc,比​​如uclibc或类似的,那么你需要在你的主机上使用交叉编译器。 在这方面,我对Ubuntu没有什么经验,但是我知道Gentoo linux的sys-devel/crossdev包使得交叉编译器的生成非常容易。 这可以是不同的体系结构(在你的情况下不需要)和不同的库(例如uclibc)。

我只是简单地拷贝二进制文件,如果遇到任何问题,请回报。