/usr/bin/ld: ../freeglut/libfreeglut_static.a(freeglut_state.o): 未定义对 Box2d 中符号 'XGetWindowAttributes' 的引用
/usr/bin/ld: ../freeglut/libfreeglut_static.a(freeglut_state.o): undefined reference to symbol 'XGetWindowAttributes' in make of Box2d
我按照 this 进行操作,它向我展示了安装步骤。
我之前安装了依赖项。
unzip Box2D_v2.1.2.zip
cd Box2D_v2.1.2/Box2D/Build
cmake ..
make
在 make 的最后一步,我收到以下消息。
/usr/bin/ld: ../freeglut/libfreeglut_static.a(freeglut_state.o): undefined reference to symbol 'XGetWindowAttributes'
//usr/lib/x86_64-linux-gnu/libX11.so.6: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
我在网上搜索过每个人都说要使用 -X11
标志进行编译,但这是一个 make 文件,我不太了解
构建示例,box2d_2.3.1:旧软件,使用"older"编译器...
tar xvf box2d_2.3.1+ds.orig.tar.xz
cd box2d-2.3.1/Box2D/
mkdir build && cd build/
CC=gcc-5 CXX=g++-5 cmake -DBOX2D_INSTALL=ON -DBOX2D_BUILD_SHARED=ON -DBOX2D_BUILD_STATIC=ON -DBOX2D_BUILD_EXAMPLES=OFF ../
make
.
[100%] Linking CXX shared library libBox2D.so
[100%] Built target Box2D_shared
Link, box2d_2.3.1 http://cdn-fastly.deb.debian.org/debian/pool/main/b/box2d/box2d_2.3.1+ds.orig.tar.xz
注意 :与 2010 年版本一样有效 Box2D_v2.1.2
https://code.google.com/archive/p/box2d/downloads
出现此错误是因为 Testbed
中的 CMakeLists.txt
文件没有为 Linux 配置。
要解决此问题,请打开文件 Box2D_v2.1.2/Box2D/Testbed/CMakeLists.txt
并相应地更改以下行。
来自这里:
if(APPLE)
# We are not using the Apple's framework version, but X11's
include_directories( /usr/X11/include )
link_directories( /usr/X11/lib )
set (OPENGL_LIBRARIES GL GLU GLUT X11)
endif(APPLE)
为此:
if(UNIX)
# We are not using the Apple's framework version, but X11's
include_directories( /usr/X11/include )
link_directories( /usr/X11/lib )
set (OPENGL_LIBRARIES GL GLU X11)
endif(UNIX)
这对我有用。
我按照 this 进行操作,它向我展示了安装步骤。
我之前安装了依赖项。
unzip Box2D_v2.1.2.zip
cd Box2D_v2.1.2/Box2D/Build
cmake ..
make
在 make 的最后一步,我收到以下消息。
/usr/bin/ld: ../freeglut/libfreeglut_static.a(freeglut_state.o): undefined reference to symbol 'XGetWindowAttributes'
//usr/lib/x86_64-linux-gnu/libX11.so.6: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
我在网上搜索过每个人都说要使用 -X11
标志进行编译,但这是一个 make 文件,我不太了解
构建示例,box2d_2.3.1:旧软件,使用"older"编译器...
tar xvf box2d_2.3.1+ds.orig.tar.xz
cd box2d-2.3.1/Box2D/
mkdir build && cd build/
CC=gcc-5 CXX=g++-5 cmake -DBOX2D_INSTALL=ON -DBOX2D_BUILD_SHARED=ON -DBOX2D_BUILD_STATIC=ON -DBOX2D_BUILD_EXAMPLES=OFF ../
make
.
[100%] Linking CXX shared library libBox2D.so
[100%] Built target Box2D_shared
Link, box2d_2.3.1 http://cdn-fastly.deb.debian.org/debian/pool/main/b/box2d/box2d_2.3.1+ds.orig.tar.xz
注意 :与 2010 年版本一样有效 Box2D_v2.1.2
https://code.google.com/archive/p/box2d/downloads
出现此错误是因为 Testbed
中的 CMakeLists.txt
文件没有为 Linux 配置。
要解决此问题,请打开文件 Box2D_v2.1.2/Box2D/Testbed/CMakeLists.txt
并相应地更改以下行。
来自这里:
if(APPLE)
# We are not using the Apple's framework version, but X11's
include_directories( /usr/X11/include )
link_directories( /usr/X11/lib )
set (OPENGL_LIBRARIES GL GLU GLUT X11)
endif(APPLE)
为此:
if(UNIX)
# We are not using the Apple's framework version, but X11's
include_directories( /usr/X11/include )
link_directories( /usr/X11/lib )
set (OPENGL_LIBRARIES GL GLU X11)
endif(UNIX)
这对我有用。