Компиляция моего кода C ++ для ARM Architecture - PullRequest
0 голосов
/ 19 января 2011

Я разработчик Java. У меня есть немного кода C ++, чтобы сделать некоторые системные вызовы. Этот код скомпилирован на 32-битной платформе Intel с использованием GCC (у меня есть файлы make), и он отлично работает на обычной 32-битной Linux-машине на базе Intel. Теперь мне нужно запустить это на ОС Linux, работающей на процессоре Marvell ARM. Когда я загружаю общие объекты в Java, я получаю следующую ошибку.

не может открыть файл общего объекта: нет такого файла или каталога (возможная причина: не удается загрузить 32-битный IA-файл IA на платформе ARM)

Пожалуйста, скажите мне, как решить эту проблему. Я посмотрел на параметры GCC и нашел один вариант для указания архитектуры (-march = armv5), и я не могу скомпилировать этот параметр.

Заранее спасибо.

Ответы [ 3 ]

4 голосов
/ 20 января 2011

Вам нужно больше, чем просто переключатель, вам нужен кросс-компилятор.Вы можете сделать свой собственный, но, вероятно, самый простой способ:

  • Найдите инструменты разработки для вашей платы.Вероятно, он поставляется с набором разработчика, который включает в себя набор инструментов для кросс-компиляции

  • Если у вас их нет, вы можете попробовать установить предварительно скомпилированную кросс-компиляцию, подобную тем, которые предоставляютсяCodeSourcery

Затем вы должны сделать доступным местоположение вашей цепочки инструментов (найдите что-то вроде arm-none-linux-gnueabi-gcc).

Crossкомпилировать простой проект тогда просто, просто переопределите переменную CC в вашем Makefile:

CROSS = arm-none-linux-gnueabi-
CC = $(CROSS)gcc
LD = $(CROSS)ld
0 голосов
/ 04 июня 2013

вот что написано на http://elinux.org/RPi_Software#ARM вики:

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

0 голосов
/ 19 января 2011

Попробуйте использовать ключ -mcpu = armv5 для gcc.

...