我需要编写一个C ++应用程序,以便在嵌入式Linux设置(DMP Vortex86DX处理器)上运行。供应商提供了minimal linux installation image ,可以安装到电路板上,并包含适当的硬件驱动程序。我的问题是由我之前关于在particular kernel to run on a different kernel上编写Linux软件的问题的答案推动的。在编写软件以确保兼容性方面,我真的不知道从哪里开始。
我的本能方法是在嵌入式设备和桌面开发机器上安装相同版本的g ++,在开发机器上编写应用程序,复制到电路板并在那里编译。这似乎很疯狂,我发现很难相信这就是嵌入式软件的开发方式。关于我之前的问题的答案,有没有一种方法可以简单地在我的桌面上构建,但使用嵌入式设备上存在的glibc版本 - 如果是这样,如何强制实现与特定版本的链接?或者是否可以静态地构建所有内容,以便应用程序不会动态链接到任何内容(我怀疑这是可能的)。
我是嵌入式开发的新手,除非能得到一些好的建议或资源,否则可以预见几个月的挫败感。无论他们看起来多么简单或琐碎,我们都会非常感激地收到任何关于从哪里开始的建议或建议 - 我真的是从嵌入式东西的最底层开始。
答案 0 :(得分:3)
好的,鉴于Vortex86SX/DX/MX声称x86兼容,一小部分编译器开关应该能够为您的目标机器编译代码:-m32
以确保32位代码,而不是-march
切换定位到特定的CPU。
然后您需要链接您的代码。只要你不使用任何花哨的东西,但简单建立的glibc函数,我希望你的开发机器和嵌入式系统上的ABI是一样的。换句话说,您针对主机库进行编译,将二进制文件复制到嵌入式系统,它应该只使用那里的库来运行。
如果X-Linux要使用其他libc,如uclibc或类似的,那么你需要在主机上使用交叉编译器。在这方面我对Ubuntu没什么经验,但我知道Gentoo linux的sys-devel/crossdev
包使得交叉编译器的生成非常容易。这可以用于不同的体系结构(在您的情况下不需要)和不同的库(例如uclibc)。
我只想试试复制二进制文件,如果遇到任何问题就报告回来。