2011-01-19 67 views
0

我是一个Java开发人员。我有一些C++代码来进行一些系统实时调用。这个代码是在Intel 32位平台上使用GCC(我有make文件)编译的,并且它可以在基于32位的常规英特尔linux机器上正常工作。现在我需要在运行于Marvell ARM处理器上的Linux操作系统上运行此操作。当我在java中加载共享对象时,出现以下错误。编译我的C++代码ARM架构

无法打开共享对象文件:没有这样的文件或目录(可能的原因:无法加载IA 32位。所以在ARM位平台)

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

在此先感谢。

+8

您需要一个交叉编译器,或者只是在Linux ARM系统上重新编译。 – 2011-01-19 20:38:39

+3

访问http://ymorin.is-a-geek.org/hg/crosstool-ng/,它提供了一个套件,用于为许多主机和目标平台创建交叉编译器 – mmmmmmmm 2011-01-19 20:43:34

回答

4

您需要的不仅仅是一个开关,您需要一个交叉编译器。你可以让你自己的,但可能是最简单的方法是:

  • 找到开发工具,为您的主板。它可能带有一个开发工具包,包括交叉编译工具链

  • 如果你没有这些,你可以尝试安装预编译交叉编译类似,经过CodeSourcery

免费提供的那些

然后,您必须在路径中提供工具链的位置(查找类似arm-none-linux-gnueabi-gcc的内容)。

交叉编译简单的项目是那么容易的,只是覆盖CC变量在Makefile:

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

尝试对gcc使用-mcpu = armv5开关。