繁体   English   中英

为 ARM 架构编译我的 C++ 代码

[英]Compiling my C++ code for ARM Architecture

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

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

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

提前致谢。

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

  • 查找适合您的电路板的开发工具。 它可能带有一个包含交叉编译工具链的开发工具包

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

然后你必须在你的路径中提供你的工具链的位置(寻找类似 arm-none-linux-gnueabi-gcc 的东西)。

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM