make命令给出不兼容的i386架构(i386x86-64)

我无法使用我的make文件的程序,我正在写一个Linux环境。 该程序是一个蕨类植物分形,使用我的教授给我的bitmapImage.h和bitmapImage.so。 每当我试图运行make文件,我会得到一串长长的错误,主要的错误是:

make g++ -c -o fern.o fern.cpp g++ -c -o fernType.o fernType.cpp g++ -m32 -o fern fern.o fernType.o bitmapImage.so /usr/bin/ld: cannot find crt1.o: No such file or directory /usr/bin/ld: cannot find crti.o: No such file or directory /usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.6/libstdc++.so when searching for -lstdc++ /usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.6/libstdc++.a when searching for -lstdc++ /usr/bin/ld: cannot find -lstdc++ /usr/bin/ld: cannot find -lm /usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.6/libgcc_s.so when searching for -lgcc_s /usr/bin/ld: cannot find -lgcc_s /usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.6/libgcc.a when searching for -lgcc /usr/bin/ld: cannot find -lgcc /usr/bin/ld: cannot find -lc /usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.6/libgcc_s.so when searching for -lgcc_s /usr/bin/ld: cannot find -lgcc_s /usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/4.6/libgcc.a when searching for -lgcc /usr/bin/ld: cannot find -lgcc /usr/bin/ld: cannot find crtn.o: No such file or directory collect2: ld returned 1 exit status make: *** [spiro] Error 1 

我的猜测是bitmapImage.so是为32位系统devise的,但是我的虚拟机ubuntu运行64位。 我如何去解决这个问题,这样我可以编译我的程序? 谢谢!

编辑:更新我的旧post,以显示我正在得到的当前错误

生成文件:

 # Make file for spirograph program ## note, uses bitmapImage shared object file (library). OBJS = fern.o fernType.o CC = g++ -m32 DEPS1 = fernType.h DEPS2 = bitmapImage.h all: spiro spiro: $(OBJS) $(CC) -m32 -o fern $(OBJS) bitmapImage.so spiro.o: fern.cpp $(DEPS1) $(CC) -m32 -c fern.cpp spiroType.o: fernType.cpp $(DEPS1) $(DEPS2) $(CC) -m32 -c fernType.cpp # ----- # clean by removing object files. clean: rm $(OBJS) 

-m32选项添加到编译行中,这会强制编译为32位地址空间的所有内容。 (它仍将在64位系统上运行。)

是的,这正是问题 – 你不能将一个32位的目标文件与一个64位的目标文件链接起来。 您需要:

  • 编译一个32位机器(真实或虚拟),
  • 请教你的教授一个64位的图书馆,或者
  • 请求库的源代码,以便你自己编译它
  1. 使用file来查看共享库是否确实是32位的。
  2. 如果是的话,你必须以某种方式获得它的64位副本。