我正在尝试在我的Ubuntu(13.10)机器上构建Box2d v2.3.1。这就是我正在做的事情:
$ premake4 gmake
$ cd Build/gmake/
$ make
但是测试台没有正确构建。我为glfw和glew符号得到了很多未定义的引用错误,如下所示:
obj/Debug/Testbed/Main.o: In function `main':
/home/mostafa/.adobe/box2d-2.3.1/Box2D/Build/gmake/../../Testbed/Framework/Main.cpp:458: undefined reference to `glfwCreateWindow'
我安装了glfw和glew的开发包。我还检查了Testbed.make makefile,因为我没有看到glfw的引用,所以将-lglfw添加到定义了LIBS变量的两个地方。但我仍然得到同样的错误。
答案 0 :(得分:4)
经过大量的搜索和调整后,我终于解决了这个问题。这就是我所做的:
确保您拥有最新版本的premake。我必须安装premake 4.4(测试版)。
从源代码编译并安装最新版本的glfw(目前为3.0.4)。 Ubuntu存储库中的版本不起作用。
确保您拥有glew和xorg开发包。我从Ubuntu的存储库安装了这些:sudo apt-get install libglew-dev xorg-dev
在Box2D目录中运行premake4 gmake
后,转到Build/gmake
并编辑Testbed.make。将行LIBS += $(LDDEPS) -lX11 -lGL -lGLU -lglut
更改为此LIBS += $(LDDEPS) -lX11 -lGL -lGLU -lglut -lGLEW -lglfw3 -lX11 -lXxf86vm -lpthread -lXrandr -lXi
。
现在运行make
。