G ++ неправильно ELF CLASS Ошибка - PullRequest
0 голосов
/ 25 июля 2011

Я пытался скомпилировать программу на C ++ на Fedora 15 x64. И получил ошибку:

./game: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory.

Я где-то читал, что все, что мне нужно сделать, это установить glibc.i686

Я установил это, и теперь появляется другая ошибка даже после использования опции "-m64" с g ++

error while loading shared libraries: libplayer_1.so: wrong ELF class: ELFCLASS64

Вот как выглядит мой make-файл:

CONC_INC = ./include \
            -I../include
APP = ./src/player_1.cxx


All :  
    g++ -m64 -Wall -g -fPIC -I$(CONC_INC) -c $(APP)
    g++ -m64 -shared -W1 -o libplayer1.so.1.0 *.o
    cp libplayer1.so.1.0 ../lib/libplayer_1.so.1.0
    ln -sf ../lib/libplayer_1.so.1.0 ../lib/libplayer_1.so
    ln -sf ../lib/libplayer_1.so.1.0 ../lib/libplayer_1.so.1
clean: 
    \rm -f *.so.* *.o

1 Ответ

3 голосов
/ 25 июля 2011

Исходная проблема, с которой вы столкнулись, предполагает, что ./game - это 32-битный динамически связанный исполняемый файл, который не запускается из-за того, что 32-битный динамический компоновщик (/lib/ld-linux.so.2) не установлен;установка 32-битного glibc пакета исправила это.

Если ./game - это 32-битный исполняемый файл, которому требуется libplayer_1.so в качестве динамической библиотеки, он не будет работать, если libplayer_1.so равен 64bit, о чем говорит новая ошибка.

Попробуйте построить библиотеку как 32-битную (-m32, а не -m64).

...