Tôi đang theo dõi this tutorial. Tôi cmake'd
và make/make install'd
glfw
và glew
hoàn hảo (theo như tôi biết). Tuy nhiên, khi tôi cố gắng để biên dịch mã mẫu ...Tài liệu tham khảo không xác định Biên dịch OpenGL/glfw/glew trên Ubuntu (g ++)
#define GLEW_STATIC
#include <GL/glew.h>
#include <GLFW/glfw3.h>
int main()
{
glfwInit();
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
glfwWindowHint(GLFW_RESIZABLE, GL_FALSE);
return 0;
}
... sử dụng cờ mối liên kết của mình ...
-lGLEW -lglfw3 -lGL -lX11 -lpthread -lXrandr -lXi
... Tôi nhận được lỗi sau:
/usr/bin/ld: /usr/local/lib/libglfw3.a(x11_init.c.o): undefined reference to symbol 'XF86VidModeQueryExtension'
/usr/lib/x86_64-linux-gnu/libXxf86vm.so.1: error adding symbols: DSO missing from command line
Tôi đã gặp lỗi và ai đó đã đề xuất thêm -lXxf86vm
. Nó đã thoát khỏi những lỗi đầu tiên, nhưng thêm vào một số lượng đáng kể hơn:
/usr/local/lib/libglfw3.a(x11_init.c.o): In function `initExtensions':
x11_init.c:(.text+0x1b93): undefined reference to `XineramaQueryExtension'
x11_init.c:(.text+0x1bad): undefined reference to `XineramaIsActive'
/usr/local/lib/libglfw3.a(x11_init.c.o): In function `_glfwCreateCursor':
x11_init.c:(.text+0x22ee): undefined reference to `XcursorImageCreate'
x11_init.c:(.text+0x23c5): undefined reference to `XcursorImageLoadCursor'
x11_init.c:(.text+0x23d5): undefined reference to `XcursorImageDestroy'
/usr/local/lib/libglfw3.a(x11_monitor.c.o): In function `_glfwPlatformGetMonitors':
x11_monitor.c:(.text+0x743): undefined reference to `XineramaQueryScreens'
Làm thế nào để tìm ra những gì cờ tôi cần? Nếu vấn đề là cách makefile của tôi được cấu trúc:
CC = g++
COMPILER_FLAGS = -std=c++11
FILES = *.cpp
LINKER_FLAGS = -lGLEW -lglfw3 -lGL -lX11 -lpthread -lXrandr -lXi -lXxf86vm
OBJS = *.o
LINUX_BIN = HelloWindow
#Compile(output into error.txt if there is an error), link, then run
linux:
$(CC) $(COMPILER_FLAGS) -c $(FILES) 2> "errors.txt"
$(CC) $(COMPILER_FLAGS) $(OBJS) -o $(LINUX_BIN) $(LINKER_FLAGS)
./$(LINUX_BIN)
Cảm ơn!
Đối GLFW, bạn có thể cần '-lGL -lX11 -lXi -lXrandr -lXxf86vm -lXinerama -lXcursor -lrt -lm' – derhass
Làm sao bạn biết những gì cờ mối liên kết để sử dụng ? – MrSnappingTurtle
Bằng cách xem các biểu tượng chưa được giải quyết ... – derhass