Кросс-компиляция Linux C ++ и JNI-кода

Я работал над проектом, пытаясь заставить мою 64-битную систему кросс-компиляции, чтобы я мог выплюнуть 32-битные двоичные файлы вместе с 64-битными двоичными файлами. Я использую 64-битный JDK и добавил необходимые 32-битные библиотеки, чтобы можно было компилировать код, но мне кажется, что я сталкиваюсь с ошибкой компоновки, которая отбрасывает меня. Я был бы очень признателен за понимание этого вопроса. Ниже приведена ошибка, которую я получаю от gcc после запуска моих Makefiles.

JniInterface.o: не удалось прочитать символы: файл в неправильном формате
collect2: ld вернул 1 статус выхода
делать: * [mylibrary] Ошибка 1

а потом опять не получается вот так

main.o: не удалось прочитать символы: файл в неправильном формате
collect2: ld вернул 1 статус выхода
делать: * [mylibrary] Ошибка 1

Кажется, он проходит через весь код C ++, но я думаю, что это может быть связано с JNI. Любые мысли будут с благодарностью, я пытаюсь понять, что здесь происходит.

Вот мои варианты компиляции / ссылки:

CC = g++

MACHDEF = __i386__

CFLAGS = -m32 -march=i686 -Os -Wall -Wextra -Dlinux -D$(MACHDEF) -D_POSIX_C_SOURCE=199309L -D_POSIX_SOURCE -D_XOPEN_SOURCE=500L -D_BSD_SOURCE -D_SVID_SOURCE -DUNIXCONN -DTCPCONN -DHAS_STICKY_DIR_BIT  -I$(JAVA_HOME)/include/ -I$(JAVA_HOME)/include/linux/ -I/usr/X11R6/include -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/gtk-2.0 -I/usr/lib/gtk-2.0/include -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo

LNKFLGS = -L/usr/lib/gtk-2.0/2.4.0/loaders -L/usr/lib -L/usr/X11R6/lib -Xlinker -rpath -Xlinker /usr/X11R6/lib

LNKLIBS = -lpthread -lc -lgtk-x11-2.0 -lXext -lX11 -lm -lpng -ljpeg -lgthread-2.0 -lXtst

COMPILE = $(CC) $(CFLAGS) -c

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector