为专有的 ARM 设备交叉编译 Mono

4

目前在工作中,我们正在为一些arm-elf小端设备开发软件。我们目前使用普通的C语言进行开发,这很麻烦。幸运的是,创建这些设备的公司提供了c++支持,但不幸的是,该公司搞砸了c++库,导致项目在编译的链接阶段失败,太棒了!

所以最近我一直在寻找替代方案,最有趣的选择是mono。我可以看到,在scratchbox中编译arm的mono大部分已经完成,这似乎是一个好的选择。但是,我还需要设置类似于我的设备的rootfs…然而,由于无法以任何方式连接到设备,我无法找出我的设备上的rootfs是什么。这会使使用scratchbox编译mono变得不可能吗?如果是这样,我能用其他方法来编译mono吗?


1
如果您的平台的C++支持存在问题,您将无法为其构建Mono(核心的大部分是C++)。 - IanNorton
C++支持并没有出现问题,但是C++ API有问题。因此,虽然我们没有问题编写C++程序,但我们无法利用C++ API。(这是一个问题,因为我们有80,000行的C代码)。 - Robin Heggelund Hansen
可能是交叉编译ARM架构的Mono的重复问题。 - user2284570
1个回答

2
您可以使用常规的配置支持进行交叉编译,类似于以下内容:
CC=arm-linux-yourabi-gcc CFLAGS="-march=armv7-a -mfloat-abi=softfp" -DARM_FPU_VFP=1 ./configure --host=arm-linux-yourabi --disable-mcs-build
当然,您需要根据设备ABI和浮点支持进行调整。 --disable-mcs-build是必需的,因为您无法在系统上运行交叉编译的mono:您可以在开发机上的单独树中构建类库和C#代码,然后将它们复制到目标设备上。
此外,与IanNorton在评论中写的相反,mono运行时是用C编写的(只有一个非常小的用于llvm的C++绑定,它不是默认构建中的必要组件,对于您的设置也绝对没有用处)。

我应该意识到的 :) - IanNorton

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