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

发布于 2024-10-13 01:12:13 字数 356 浏览 4 评论 0原文

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

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

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

提前致谢。

I am a java developer. I have some C++ code to make some system realted calls. This code is compiled on Intel 32-bit platform using GCC (I have make files) and it works fine on regular Intel based 32-bit linux machine. Now I need to run this on a linux OS running on Marvell ARM processor. When I load the shared objects in java I get the following error.

cannot open shared object file: No such file or directory (Possible cause: can't load IA 32-bit .so on a ARM-bit platform)

Please tell me how to resolve this issue. I looked at the GCC options and I found one option to specify the architecture (-march=armv5) and I can't compile with that option.

Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

冰魂雪魄 2024-10-20 01:12:13

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

  • 找到适合您的主板的开发工具。它可能附带一个包含交叉编译工具链的开发套件

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

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

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

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

You need more than just a switch, you need a cross-compiler. You can make your own, but probably the easiest way is :

  • Find the development tools for your board. It probably comes with a development kit that includes a cross-compilation toolchain

  • If you don't have these, you can try to install a precompiled cross-compilation like the ones provided freely by CodeSourcery

Then you have to make the location of your toolchain (look for something like arm-none-linux-gnueabi-gcc) available in your path.

Cross compiling simple project is then easy, just override the CC variable in your Makefile :

CROSS = arm-none-linux-gnueabi-
CC = $(CROSS)gcc
LD = $(CROSS)ld
玻璃人 2024-10-20 01:12:13

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

Try using the -mcpu=armv5 switch for gcc.

獨角戲 2024-10-20 01:12:13

以下是 http://elinux.org/RPi_Software#ARM 上的内容:

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

Here is what's written on http://elinux.org/RPi_Software#ARM:

-Ofast -mfpu=vfp -mfloat-abi=hard -march=armv6zk -mtune=arm1176jzf-s
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文