如何在Linux的KDevelop中静态链接wxWidgets及编译静态库?
编译静态版wxWidgets 3.1.0并在KDevelop中实现静态链接(Fedora 27)
一、编译静态版wxWidgets
既然你已经搞定了动态版的编译,推荐新建一个独立的编译目录来处理静态版本,避免和动态版的文件混在一起造成干扰:
- 进入wxWidgets-3.1.0的根目录,创建静态编译目录并切换进去:
mkdir build-gtk-unicode-static cd build-gtk-unicode-static
- 执行configure命令,开启静态编译并禁用动态库生成:
../configure --disable-debug --enable-static --disable-shared
参数说明:
--enable-static:指示编译系统生成静态库(.a格式文件)--disable-shared:关闭动态库的编译流程,确保只产出静态版本--disable-debug:延续你之前的发布版配置,如果需要调试版可移除这个参数
- 编译并安装静态库:
make -j$(nproc) # 用多线程加速编译,nproc会自动匹配你的CPU核心数 sudo make install sudo ldconfig
要是不想覆盖系统中已安装的动态版wxWidgets,可以在configure时加上--prefix=/usr/local/wx-static,把静态版安装到自定义目录,后续使用时指定对应路径的wx-config就行。
二、在KDevelop中配置静态链接
KDevelop支持通过wx-config自动获取静态编译所需的参数,配置步骤如下:
打开你的wxWidgets项目,右键点击项目名称,选择Open Configuration(或类似的"项目设置"选项,不同KDevelop版本可能略有差异)。
进入C/C++ Build → Settings标签页:
编译器配置:切换到
Compiler→General,在Other Flags输入框中添加:$(wx-config --static --cxxflags)如果你把静态版安装到了自定义路径,替换成完整路径的
wx-config,比如:$(/usr/local/wx-static/bin/wx-config --static --cxxflags)链接器配置:切换到
Linker→General,在Other Flags输入框中添加:$(wx-config --static --libs)自定义安装路径的话改成:
$(/usr/local/wx-static/bin/wx-config --static --libs)
保存设置后重新构建项目,就能实现静态链接了。此时生成的可执行文件会包含所有wxWidgets的静态代码,不需要依赖系统中的动态库就能直接运行。
小提示
- 静态编译后的可执行文件体积会比动态链接的大,但优势是无需在目标机器上预装wxWidgets动态库就能运行。
- 如果编译时遇到依赖缺失,Fedora下可以用
dnf install gtk3-devel这类命令安装对应的开发库,确保静态编译所需的依赖完整。
内容的提问来源于stack exchange,提问作者Maestro
相关产品推荐
相关产品推荐

