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

如何在Windows的Ubuntu Bash环境下编译基于XWindows的C++程序?

在WSL Ubuntu环境下编译XWindows C++程序的可行方案

我之前也折腾过在Windows的Ubuntu Bash(也就是早期WSL环境)里编译依赖XWindows的C++程序,虽然官方当时不直接支持Linux图形应用,但编译环节完全可以搞定,给你梳理下具体步骤:

  • 确认依赖安装到位
    你已经安装了libx11-dev,可以先验证下安装状态,避免包损坏:

    dpkg -l libx11-dev
    

    如果你的程序还用到其他X扩展库(比如Xext、Xrender),可以一并安装对应的开发包:

    sudo apt-get install libxext-dev libxrender-dev
    
  • 修正Makefile的链接配置
    这是最关键的一步!XWindows程序编译时必须显式链接X11库,否则会报一堆“未定义引用”的错误。假设你的源文件是xapp.cpp,给你一个示例Makefile:

    # 指定C++编译器
    CC = g++
    # 编译参数:开启警告、指定C++标准
    CFLAGS = -Wall -Wextra -std=c++11
    # 链接X11库
    LIBS = -lX11
    
    # 默认目标:编译生成可执行文件
    all: xapp
    
    # 编译规则:依赖源文件,生成可执行文件
    xapp: xapp.cpp
        $(CC) $(CFLAGS) -o $@ $< $(LIBS)
    
    # 清理生成的文件
    clean:
        rm -f xapp
    

    重点是LIBS = -lX11这一行,必须加到编译命令里,让编译器链接X11的库文件。

  • 执行编译
    在终端里切换到代码目录,直接运行:

    make
    

    如果编译报错提示找不到X头文件(比如X11/Xlib.h),可以手动指定头文件路径(不过正常安装libx11-dev后不需要),把CFLAGS改成:

    CFLAGS = -Wall -Wextra -std=c++11 -I/usr/include/X11
    
  • 额外提一句运行的事儿(可选)
    编译成功后,如果想运行程序,你需要在Windows端装一个X服务器(比如VcXsrv或者Xming),启动X服务器后,在WSL终端里设置显示变量:

    export DISPLAY=:0
    

    之后就能运行你的X程序了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:26:27