编译Box2D时出现XGetWindowAttributes未定义引用错误求助
解决Box2D编译时
XGetWindowAttributes未定义的链接错误 别担心,这个链接错误很常见——问题出在freeglut静态库依赖X11库,但CMake生成的Makefile里没有自动添加这个依赖,导致链接器找不到XGetWindowAttributes符号。下面给你几个简单的解决办法:
方法一:修改CMake配置(推荐,一劳永逸)
- 进入Box2D的主目录:
cd Box2D_v2.1.2/Box2D - 打开根目录下的
CMakeLists.txt文件 - 找到链接freeglut的相关代码块(通常会有
target_link_libraries相关的行),在原有依赖后添加X11库。比如:
如果有多个目标需要链接freeglut,都要加上# 找到类似这样的行 target_link_libraries(Box2DTest freeglut) # 修改成 target_link_libraries(Box2DTest freeglut X11)X11依赖 - 回到Build目录,重新运行cmake并编译:
cd Build cmake .. make
方法二:临时在make时添加链接参数
如果你不想修改CMake文件,可以直接在make命令里附加X11库的链接参数:
make LDFLAGS="-lX11"
这个参数会告诉链接器在编译时额外链接X11库,补上缺失的符号。
方法三:重新cmake时指定链接参数
也可以在重新运行cmake时,直接设置全局的链接器参数:
cd Build cmake .. -DCMAKE_EXE_LINKER_FLAGS="-lX11" make
这样就能解决链接错误,顺利完成Box2D的编译了。
内容的提问来源于stack exchange,提问作者Deepansh Parmani
相关产品推荐
相关产品推荐

