La Compilation échoue avec “délocalisation R_X86_64_32 contre".rodata.str1.8' ne peut pas être utilisée lors de la prise d'un objet partagé”

Je suis en train de compiler ce code source à partir du makefile dans un VPS, mais sa ne fonctionne pas. Le VPS est un 64 Cent OS

Voici le message d'erreur

# make
gcc -c -O3 -w -DLINUX -I../SDK/amx/ ../SDK/amx/*.c
g++ -c -O3 -w -DLINUX -I../SDK/amx/../SDK/*.cpp
g++ -c -O3 -w -DLINUX -I../SDK/amx/*.cpp
g++ -O2 -fshort-wchar -shared -o "TCP_V1.so" *.o
/usr/bin/ld: TCP-LINUX_V1.o: relocation R_X86_64_32 against `.rodata.str1.8' can not be     used when making a shared object; recompile with -fPIC
TCP-LINUX_V1.o: could not read symbols: Bad value
collect2: ld returned 1 exit status
make: *** [all] Error 1

Voici mon makefile:

GPP=g++
GCC=gcc
OUTFILE="TCP_V1.so"

COMPILE_FLAGS=-c -O3 -w -DLINUX -I../SDK/amx/

all:
    $(GCC) $(COMPILE_FLAGS) ../SDK/amx/*.c
    $(GPP) $(COMPILE_FLAGS) ../SDK/*.cpp
    $(GPP) $(COMPILE_FLAGS) *.cpp
    $(GPP) -O2 -fshort-wchar -shared -o $(OUTFILE) *.o

Ce que quelqu'un sait quel est le problème?

  • Avez-vous essayé recompile with -fPIC?
  • Désolé, mais je ne suis pas sûr de la façon de le faire. Ne pouvez pas trouver quelque chose à propos de "-fPIC" sur google.
  • Essayez quelque chose comme COMPILE_FLAGS=-c -O3 -w -DLINUX -fPIC -I../SDK/amx/
  • Connexes: stackoverflow.com/questions/6093547/...
  • si vous effectuez une recherche google pour le fPIC, vous trouverez certainement rien. Retirez le moins ou utilisez des guillemets "-fPIC", sinon vous omettez tous les résultats contenant le fPIC.
  • Double Possible de Ce n'R_X86_64_32S et R_X86_64_64 réinstallation veux dire?

InformationsquelleAutor user1667191 | 2013-10-14