8
我編譯我的程序使用glfw3庫時出現問題。glfw3編譯未定義的引用
當我嘗試使用make進行編譯時,我收到了未定義引用的錯誤列表,但我的類被編譯爲.o文件,只有最終的可執行文件未被創建。
標準輸出:
g++ -Wall -g -c main.cpp -lGL -lGLU -lglfw3 -lX11 -lXxf86vm -lXrandr -lpthread -lXi
g++ -Wall -g -c error.cpp -lGL -lGLU -lglfw3 -lX11 -lXxf86vm -lXrandr -lpthread -lXi
g++ -Wall -g -c sWindow.cpp -lGL -lGLU -lglfw3 -lX11 -lXxf86vm -lXrandr -lpthread -lXi
g++ -Wall -g -o ecl main.o error.o sWindow.o -lGL -lGLU -lglfw3 -lX11 -lXxf86vm -lXrandr -lpthread -lXi
標準錯誤:
/usr/local/lib/libglfw3.a(context.c.o): In function `parseGLVersion':
context.c:(.text+0x53): undefined reference to `glGetString'
/usr/local/lib/libglfw3.a(context.c.o): In function `_glfwRefreshContextAttribs':
context.c:(.text+0x907): undefined reference to `glGetIntegerv'
context.c:(.text+0x98a): undefined reference to `glGetIntegerv'
context.c:(.text+0x9df): undefined reference to `glGetIntegerv'
context.c:(.text+0xa32): undefined reference to `glGetIntegerv'
/usr/local/lib/libglfw3.a(context.c.o): In function `glfwExtensionSupported':
context.c:(.text+0xd59): undefined reference to `glGetString'
context.c:(.text+0xd93): undefined reference to `glGetIntegerv'
/usr/local/lib/libglfw3.a(window.c.o): In function `glfwCreateWindow':
window.c:(.text+0x6f8): undefined reference to `glClear'
/usr/local/lib/libglfw3.a(x11_time.c.o): In function `getRawTime':
x11_time.c:(.text+0x20): undefined reference to `clock_gettime'
/usr/local/lib/libglfw3.a(x11_time.c.o): In function `_glfwInitTimer':
x11_time.c:(.text+0x72): undefined reference to `clock_gettime'
/usr/local/lib/libglfw3.a(glx_context.c.o): In function `getFBConfigAttrib':
glx_context.c:(.text+0x51): undefined reference to `glXGetFBConfigAttrib'
/usr/local/lib/libglfw3.a(glx_context.c.o): In function `chooseFBConfig':
glx_context.c:(.text+0x7e): undefined reference to `glXGetClientString'
glx_context.c:(.text+0x104): undefined reference to `glXGetFBConfigs'
/usr/local/lib/libglfw3.a(glx_context.c.o): In function `createLegacyContext':
glx_context.c:(.text+0x43f): undefined reference to `glXCreateNewContext'
/usr/local/lib/libglfw3.a(glx_context.c.o): In function `_glfwInitContextAPI':
glx_context.c:(.text+0x48f): undefined reference to `glXQueryExtension'
glx_context.c:(.text+0x4ca): undefined reference to `glXQueryVersion'
/usr/local/lib/libglfw3.a(glx_context.c.o): In function `_glfwCreateContext':
glx_context.c:(.text+0x791): undefined reference to `glXGetVisualFromFBConfig'
/usr/local/lib/libglfw3.a(glx_context.c.o): In function `_glfwDestroyContext':
glx_context.c:(.text+0xd09): undefined reference to `glXDestroyContext'
/usr/local/lib/libglfw3.a(glx_context.c.o): In function `_glfwPlatformMakeContextCurrent':
glx_context.c:(.text+0xd55): undefined reference to `glXMakeCurrent'
glx_context.c:(.text+0xd70): undefined reference to `glXMakeCurrent'
/usr/local/lib/libglfw3.a(glx_context.c.o): In function `_glfwPlatformSwapBuffers':
glx_context.c:(.text+0xdc2): undefined reference to `glXSwapBuffers'
/usr/local/lib/libglfw3.a(glx_context.c.o): In function `_glfwPlatformExtensionSupported':
glx_context.c:(.text+0xe69): undefined reference to `glXQueryExtensionsString'
/usr/local/lib/libglfw3.a(glx_context.c.o): In function `_glfwPlatformGetProcAddress':
glx_context.c:(.text+0xeb1): undefined reference to `glXGetProcAddressARB'
collect2: ld returned 1 exit status
make: *** [ecl] Error 1
這是我的makefile:
CXX = g++
CXXFLAGS = -Wall -g
LIBS = -lGL -lGLU -lglfw3 -lX11 -lXxf86vm -lXrandr -lpthread -lXi
DEPENDENCIES = main.o error.o sWindow.o
# ****************************************************
# Targets needed to bring the executable up to date
ecl: $(DEPENDENCIES)
$(CXX) $(CXXFLAGS) -o ecl $(DEPENDENCIES) $(LIBS)
main.o: main.cpp
$(CXX) $(CXXFLAGS) -c main.cpp $(LIBS)
error.o: error.cpp
$(CXX) $(CXXFLAGS) -c error.cpp $(LIBS)
sWindow.o: sWindow.cpp
$(CXX) $(CXXFLAGS) -c sWindow.cpp $(LIBS)
clean:
rm -f *.o main
echo "Clean done"
你有任何想法是什麼原因導致這個問題以及如何解決它?
哦,我看到了,無論如何感謝vm – mezo