看起来缺少的符号来自libdl
。
作为额外的奖励,我将给您一个Makefile。请记住要使用制表符缩进,不能缩进,否则Makefile将不起作用。
all: out
clean:
rm -f out *.o
.PHONY: all clean
CXX = g++
CPPFLAGS =
CXXFLAGS = -std=c++11 -Wall -Wextra -g
LIBS = -lGL -lGLU -lglfw3 -lX11 -lXxf86vm -lXrandr -pthread -lXi -ldl
LDFLAGS =
out: main.o
$(CXX) $(LDFLAGS) -o $@ $^ $(LIBS)
但是,如果使用,会容易得多pkg-config
。我不知道正确的命令是什么(我现在不在Linux上,所以我无法检查),但是它看起来像这样:
packages = glfw3
CPPFLAGS := $(shell pkg-config --cflags $(packages))
LIBS := $(shell pkg-config --libs $(packages))
这样,您甚至不必知道自己需要-ldl
,因为pkg-config
它将为您解决。这是标准的处理方式。
尝试pkg-config --libs glfw3
自己运行以查看输出。如果尚未安装,请运行sudo apt-get install pkg- config
。