【问题标题】:Cannot build Box2D on Linux: linker error无法在 Linux 上构建 Box2D:链接器错误
【发布时间】:2014-07-03 17:15:09
【问题描述】:

我正在尝试在我的 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 生成文件,因为我没有看到对 glfw 的引用,所以将 -lglfw 添加到定义 LIBS 变量的两个位置。但我仍然遇到同样的错误。

【问题讨论】:

    标签: c++ linux build linker box2d


    【解决方案1】:

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

    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

    【讨论】:

    • 谢谢!这为我省去了很多麻烦。我还需要-lXinerama -lXcursor
    • 嗯...这在 Ubuntu 14.04 上对我不起作用。我收到一个奇怪的错误:#error "No supported window creation API selected" 错误,然后是一堆其他未定义的符号错误。
    • 我不知道那是什么,但如果你不关心测试平台,你可以尝试自己构建 Box2D:make -f Box2D.make
    • @Elektito 没有 Box2D.make,至少现在没有了。
    • 我已经有一段时间没有使用 Box2D 了。如果我有空闲时间,我会尝试用最新版本更新我的答案。
    猜你喜欢
    • 2019-12-27
    • 1970-01-01
    • 2022-08-19
    • 2016-01-20
    • 1970-01-01
    • 1970-01-01
    • 2018-07-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多