在嵌入式Linux系统中开发C++应用程序

3
我需要编写一个C++应用程序,运行在嵌入式Linux环境下(DMP Vortex86DX处理器)。供应商提供了一个最小的Linux安装镜像,可以安装到板子上并包含适当的硬件驱动程序。我的问题是由于之前关于在特定内核上运行不同内核的Linux软件编写的答案而引起的。当涉及到编写软件以确保兼容性时,我真的不知道从哪里开始。
我的直觉做法是在嵌入式设备和桌面开发机上安装相同版本的g++,在dev机器上编写应用程序,将其复制到板子上并在那里进行编译。虽然这似乎很疯狂,但我很难相信这就是嵌入式软件开发的方式。关于我之前问题的答案,是否有一种方法可以在桌面上简单地构建,但使用存在于嵌入式设备上的glibc版本 - 如果可以,如何强制链接到特定版本?或者是否可能将所有内容静态构建,以便应用程序不链接到任何动态内容(我怀疑这是不可能的)。
我对嵌入式开发完全是个新手,除非我能得到一些好的建议或资源,否则我预见到数月的挫败感。任何指针或建议都将非常感激,无论它们看起来多么简单或琐碎 - 我真的从嵌入式方面开始了解。

2
啊嗯……http://en.wikipedia.org/wiki/Cross_compiler - Bo.
并引用您的客户支持:“我们为您提供免费的软件支持资源,仅供参考。我们的资源可能会引导您访问其他网站。这是为了节省您的研究时间,我们不承担任何提供进一步支持或回答有关您的应用程序问题的义务或责任。如果您需要特殊帮助,请联系您的账户经理。” - Bo.
@Bo 感谢你的第一个链接 - 至少省略号后面的部分。 - mathematician1975
再次问候!很遗憾这个板子仍然给你带来麻烦。正如@Bo在上面所说,你需要从桌面电脑进行交叉编译。唯一的问题是,你必须找出处理器架构。然后你祈祷GCC支持它。 - Linuxios
谢谢 - 即使像“交叉编译”这样的东西对我来说完全是新的。希望我的公司要么更换硬件,要么雇用一个嵌入式Linux专家,要么解雇我。现在我不挑剔哪一个。 - mathematician1975
显示剩余8条评论
1个回答

3

好的,考虑到Vortex86SX/DX/MX声称是x86兼容的,一小部分编译器开关应该能让你为目标机器编译代码:-m32以确保32位代码,没有-march开关针对特定CPU。

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

如果X-Linux使用其他libc,比如uclibc或类似的,则您需要在主机上使用交叉编译器。我在这方面对Ubuntu的经验很少,但我知道Gentoo Linux的sys-devel/crossdev包使得生成交叉编译器非常容易。这既可以用于不同的架构(在您的情况下不需要)也可以用于不同的库(例如uclibc)。

我建议您尝试直接复制二进制文件,如果在那里遇到任何问题,请回报。


非常感谢这个 - 我会尝试一下。根据他们的信息,当前版本使用 glibc 2.8.90。 - mathematician1975
终于成功安装了 Xlinux,现在至少有了一个起点(这正是我想要的),非常感谢您的帮助。 - mathematician1975

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接