You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

编译Box2D时出现XGetWindowAttributes未定义引用错误求助

解决Box2D编译时XGetWindowAttributes未定义的链接错误

别担心,这个链接错误很常见——问题出在freeglut静态库依赖X11库,但CMake生成的Makefile里没有自动添加这个依赖,导致链接器找不到XGetWindowAttributes符号。下面给你几个简单的解决办法:

方法一:修改CMake配置(推荐,一劳永逸)

  1. 进入Box2D的主目录:cd Box2D_v2.1.2/Box2D
  2. 打开根目录下的CMakeLists.txt文件
  3. 找到链接freeglut的相关代码块(通常会有target_link_libraries相关的行),在原有依赖后添加X11库。比如:
    # 找到类似这样的行
    target_link_libraries(Box2DTest freeglut)
    # 修改成
    target_link_libraries(Box2DTest freeglut X11)
    
    如果有多个目标需要链接freeglut,都要加上X11依赖
  4. 回到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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:10:39