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

WSL Ubuntu 22.04.2中MinilibX测试报错及mlx_init()失败求助

MinilibX在WSL Ubuntu中mlx_init()返回NULL的解决办法

问题根源

MinilibX依赖X11图形系统,而WSL默认没有内置图形显示环境,mlx_init()需要连接到可用的X服务器才能完成初始化,因此会返回NULL,测试脚本也会报"Connection ... !! KO !!"错误。

解决步骤

  1. 在Windows端安装X服务器
    下载并安装VcXsrv(免费开源的X服务器),启动时选择「Multiple windows」模式,取消勾选「Native opengl」,同时勾选「Disable access control」(避免权限验证问题)。

  2. 配置WSL的DISPLAY环境变量
    在WSL终端中执行以下命令,让WSL指向Windows端的X服务器:

    export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0
    

    若想每次启动终端自动生效,可将上述命令添加到~/.bashrc或~/.zshrc文件末尾,执行source ~/.bashrc使配置立即生效。

  3. 安装MinilibX依赖的系统库
    在WSL中安装X11相关开发库:

    sudo apt update && sudo apt install libx11-dev libxext-dev libbsd-dev
    
  4. 修正测试代码并重新编译
    原代码未判断mlx_init()的返回值,若返回NULL直接调用mlx_destroy_display会导致错误,建议修改为:

    int main(void)
    {
        void *mlx_ptr = mlx_init();
        if (mlx_ptr == NULL)
        {
            write(2, "mlx_init failed\n", 16);
            return 1;
        }
        mlx_destroy_display(mlx_ptr);
        free(mlx_ptr);
        return 0;
    }
    

    编译时需链接MinilibX及X11相关库:

    gcc your_test_file.c -lmlx -lX11 -lXext -o test
    

    运行编译后的程序,mlx_init()即可正常完成初始化。

内容的提问来源于stack exchange,提问作者larfef

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 00:12:37