【发布时间】:2013-10-22 07:09:10
【问题描述】:
我正在尝试从 VPS 中的 makefile 编译此源代码,但它不起作用。 VPS 是 64 美分操作系统
这是完整的错误
# 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
这是我的生成文件:
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
有人知道怎么回事吗?
【问题讨论】:
-
你试过
recompile with -fPIC吗? -
抱歉,我不知道该怎么做。在谷歌上找不到任何关于“-fPIC”的信息。
-
试试
COMPILE_FLAGS=-c -O3 -w -DLINUX -fPIC -I../SDK/amx/ -
如果你在 google 上搜索 -fPIC 你肯定什么也找不到。删除减号或使用引号“-fPIC”,否则将省略所有包含 fPIC 的结果。
标签: c++ linux gcc linker shared-libraries