2013-02-25 2 views
2

Я пытаюсь построить 32-разрядный libGLEW.so .. Я на 64-битном Linux .. Я пробовал добавить -m32 в CFLAGS в Makefile. Что говорит:Компиляция 32-разрядного libGLEW.so на 64-разрядном Linux

cc -DGLEW_NO_GLU -O2 -Wall -W -Iinclude -m32 -fPIC -o tmp/linux/default/shared/glew.o -c src/glew.c 
cc -shared -Wl,-soname=libGLEW.so.1.9 -o lib/libGLEW.so.1.9.0 tmp/linux/default/shared/glew.o -L/usr/X11R6/lib64 -L/usr/lib64 -lXmu -lXi -lGL -lXext -lX11 
/usr/bin/ld: i386 architecture of input file `tmp/linux/default/shared/glew.o' is incompatible with i386:x86-64 output 
/usr/bin/ld: tmp/linux/default/shared/glew.o: file class ELFCLASS32 incompatible with ELFCLASS64 
/usr/bin/ld: final link failed: File in wrong format 
collect2: error: ld returned 1 exit status 
make: *** [lib/libGLEW.so.1.9.0] Error 1 

Я не совсем уверен, что это значит? Похоже, что он строит 32-битный файл .o, но пытается связать его как цель 64? Как я исправить это. Я видел, что он добавляет -L/usr/X11R6/lib64 и -L/usr/lib64, но я также попытался запустить make SYSTEM = gnu, какие объявления/usr/X11R6/lib и/usr/lib, но это дает мне ту же ошибку.

ответ

2

Хорошо, мне нужны были пакеты, перечисленные ниже. Я добавил -m32 к обоим CFLAGS и LDFLAGS в Makefiles и просто чтобы убедиться, что я поставил -m32 в CFLAGS, CXXFLAGS и LDFLAGS в environement просто чтобы быть уверенным .. а потом побежал сделать

libx11-dev:i386 
libxext-dev:i386 
libxmu-dev:i386 
libxi-dev:i386 
libgl1-mesa-dev:i386 

export CFLAGS='-m32' 
export CXXFLAGS='-m32' 
export LDFLAGS='-m32' 
make