无法在Linux上构建Box2D:链接器错误

时间:2014-05-15 10:07:06

标签: c++ linux build linker box2d

我正在尝试在我的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变量的两个地方。但我仍然得到同样的错误。

1 个答案:

答案 0 :(得分:4)

经过大量的搜索和调整后,我终于解决了这个问题。这就是我所做的:

  1. 确保您拥有最新版本的premake。我必须安装premake 4.4(测试版)。

  2. 从源代码编译并安装最新版本的glfw(目前为3.0.4)。 Ubuntu存储库中的版本不起作用。

  3. 确保您拥有glew和xorg开发包。我从Ubuntu的存储库安装了这些:sudo apt-get install libglew-dev xorg-dev

  4. 在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

  5. 现在运行make