我一直致力于一个试图让我的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