交叉编译Linux C ++和JNI代码

时间:2013-02-28 15:26:10

标签: c++ linux gcc java-native-interface cross-compiling

我一直致力于一个试图让我的64位系统进行交叉编译的项目,以便我可以将64位二进制文​​件与64位二进制文​​件一起吐出。我正在使用64位JDK并且我已经添加了必要的32位库以便允许编译代码,但是我似乎遇到了一个链接错误,它让我离开了。我非常感谢对此问题的任何见解。下面是我运行Makefile之后从gcc收到的错误。

  

JniInterface.o:无法读取符号:文件格式错误      collect2:ld返回1退出状态      make: * [mylibrary]错误1

然后再次失败

  

main.o:无法读取符号:文件格式错误      collect2:ld返回1退出状态      make: * [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 个答案:

没有答案