将GLFW和GLEW安装到不同的Linux机器上一直很麻烦。在最终完成所有设置后,我正在尝试为我的Computer Graphics类编译一个赋值,但收到错误:
/usr/bin/ld: a2.o: relocation R_X86_64_32 against `.rodata' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: Nonrepresentable section on output
collect2: error: ld returned 1 exit status
Makefile:6: recipe for target 'a2' failed
make: *** [a2] Error 1
我一直在尝试使用-fPIC
以多种不同的方式使用g++
重新编译,但是关于我应该放置选项的位置,文档很难理解。
我已经在-fPIC和共享库中阅读了有关此问题的不同帮助请求,但它们都没有相关或足够的答案。
这是我正在使用的makefile:
COMPILE_FLAGS=-c -fPIC
all: a2
a2: a2.o
g++ -fPIC a2.o -o a2 -lGL -lGLU -lglfw3 -lX11 -lXxf86vm -lXrandr -lpthread -lXi -ldl -lXinerama -lXcursor -lGLEW
a2.o: a2.cpp
g++ -std=c++11 -c a2.cpp