编译我的ARM体系结构的C ++代码

时间:2011-01-19 20:37:09

标签: c++ linux gcc java-native-interface arm

我是一名java开发人员。我有一些C ++代码来进行一些系统实现的调用。这段代码是在使用GCC(我有make文件)的Intel 32位平台上编译的,它可以在常规的基于Intel的32位linux机器上运行。现在我需要在运行Marvell ARM处理器的linux OS上运行它。当我在java中加载共享对象时,我收到以下错误。

无法打开共享对象文件:没有此类文件或目录(可能的原因:无法在ARM位平台上加载IA 32位.so)

请告诉我如何解决此问题。我查看了GCC选项,我找到了一个指定架构的选项(-march = armv5),我无法使用该选项进行编译。

提前致谢。

3 个答案:

答案 0 :(得分:4)

您需要的不仅仅是交换机,还需要交叉编译器。你可以制作自己的,但可能最简单的方法是:

  • 查找适用于您的主板的开发工具。它可能附带一个包含交叉编译工具链的开发工具包

  • 如果您没有这些,可以尝试安装预编译的交叉编译,例如CodeSourcery免费提供的交叉编译

然后你必须在你的路径中找到工具链的位置(寻找像arm-none-linux-gnueabi-gcc这样的东西)。

交叉编译简单项目很简单,只需覆盖Makefile中的CC变量:

CROSS = arm-none-linux-gnueabi-
CC = $(CROSS)gcc
LD = $(CROSS)ld

答案 1 :(得分:0)

尝试将-mcpu = armv5开关用于gcc。

答案 2 :(得分:0)

这是http://elinux.org/RPi_Software#ARM wiki上写的内容:

-Ofast -mfpu = vfp -mfloat-abi = hard -march = armv6zk -mtune = arm1176jzf-s