当前位置: 首页 > 工具软件 > GTKmm > 使用案例 >

Linux ubuntu GUI QT GTK+ wxWidgets gtkmm 动态库 静态库 安装 详细步骤

宰父阳焱
2023-12-01

如果有朋友根据文章步骤出现其他错误请私信我,一起研究解决。

通用操作

标题一周来对gtk+,Qt,wxWidgets都进行了开发测试,包括Qt的动态库链接和静态库链接方式,gtk+不需要静态库链接,wxWidgets的静态库链接方式没有成功,只尝试了动态库的方式,但是用把系统库一起打包后运行到Ubuntu14版本跟Qt报的是一样的错误,所以静态库的方式应该也一样。
由于网上的资料鱼龙混杂,甚至有一些误导性资料,顺便整理一下以便以后再次使用。
以下操作基于ubuntu16.04LTS64位版本,gtkmm基于ubuntu14.04LTS64位版本,因为发现codeblocks在ubuntu16.04LTS64位版本下经常卡死,没法正常运行,遂转至ubuntu14.04LTS64位版本进行开发。目前仅发现patchelf软件无法在ubuntu14.04LTS进行安装,其他暂无发现区别。
通用操作:
开机,打开terminal窗口:ctrl+alt+t
要用命令行安装东西前先sudo apt-get update更新一下软件列表
sudo apt-get install build-essential一般用这个命令就可以把GCC和G++以及其他一些相关的东西都装好了
这里附带一下怎么找要安装的包对应的命令,https://ubuntu.pkgs.org/在这个网站上搜索要安装的包,搜到之后点进去有具体的下载命令描述。

GTK+:

安装版本是GTK+3.0,若是其他版本直接把数字3改成2或者4即可
ubuntu中直接用命令行安装使用如下命令 sudo apt-get install libgtk-3-dev
安装项目管理工具 sudo apt-get install pkg-config (印象中在安装gtk+的时候会同时安装,装完gtk+时用pkg-config -–version看一下安装情况,如果没有就再安装pkg-config) # gtk+版本查看 pkg-config --modversion gtk±3.0
(选择安装)GTk帮助文档 sudo apt-get install devhelp
安装codeblocks,sudo apt-get install codeblocks。(codeblocks是一个代码编辑器,并且可以进行编译调试。)
codeblocks的编译器设置。在settings(设置)-> compiler settings (编译器)里进行编译器设置,先在selected compiler(选择的编译器)里选GCC GUN compiler,然后点copy按钮复制一个,重命名为GCC GUN compiler GTK+,并设置为默认编译器,点击 set as default ,然后下面进行配置,在 Compiler settings -> Other options -> 添加pkg-config --cflags gtk+-3.0(目的是添加include),在linker settings -> Other linker options 中也添加 pkg-config --libs gtk±3.0`(目的是添加lib)。
到此GTK+环境搭建完成。
安装图形化界面辅助工具glade,sudo apt-get install glade直接安装,目前两个东西怎么配合使用还不熟悉。

Qt:

尝试了5.14.2和5.9.2两个版本,操作基本没有差别。下载地址在https://download.qt.io/archive/qt/,源码和执行文件都有,原先之所以选择5.14.2,是因为这是最后一个官方提供执行文件的版本,从这个版本往后的都需要自己下载源码进行编译。以tar.xz做后缀的就是源码,放置在single文件夹里,以.run做后缀的就是执行文件,直接一般从版本文件夹点进去就能看到。

动态库QT安装方式:

如果是下载执行那个文件安装的方式,那么默认是动态库,没得改。
安装的时候会把图形界面开发工具creator一起安装,安装完成直接打开creator新建项目。
自己写脚本打包动态库的方式:https://www.cnblogs.com/j-c-y/p/11597340.html亲测确实可用,开发环境是Ubuntu16.04,但是打包的时候只打包QT的库,而不会打包系统库,所以当出现Ubuntu大版本之间系统库不兼容的情况时,就会运行不了。

静态库QT安装方式:

下载QT源码,然后接下来的操作太过繁琐,参考https://blog.csdn.net/weixin_40134955/article/details/108753274这个网址的操作,包括到后面的程序打包。
最后配置环境变量修改.profile的方法可以用sudo gedit .profile指令编辑。
利用linuxdeployqt打包的方式:会调用到patchelf和AppImagetool,所以要三个东西都安装好再打包。

wxWidgets:

版本wxWidgets3.0

动态库安装方法:

通过sudo apt-get install libwxgtk3.0-dev 直接安装,这个能直接成功。
自己写脚本打包动态库的方式:https://www.cnblogs.com/j-c-y/p/11597340.html亲测确实可用。

静态库安装方法:

通过sudo apt-get source libwxgtk3.0-dev 获取源码,进入解压文件夹后,sudo ./configure --disable-shared进行设置,编译成静态库,如果提示需要GTK+,就先安装GTK+,然后能成功设置选项之后,sudo make ,开始编译,在这一步开始报错,并且找不到原因和解决方法,(可能是用了不合适的ubuntu版本),编译完就sudo make install,安装完成。
在http://www.wxwidgets.org/downloads/#latest_stable下载3.0.5版本的压缩包,然后解压,进入解压文件夹,设置config和make进行编译,然后sudo make install,这个方法能成功。

安装codeblocks,sudo apt-get install codeblocks。
装完后创建的wxWidgets能直接编译运行,但是在这一步的时候发现不能创建wxsmith的工程。
sudo apt-get install codeblocks-contrib安装codeblocks的插件,安装完后就可以创建wxsmith的工程了。

在Project菜单中点击Build options,将头文件的路径“/wxWidgets-3.0.5/include”添加到编译器的头文件搜索路径search directories >compiler,将静态库的路径“/wxWidgets-3.0.5/lib”添加到链接器的搜索路径search directories >linker,这一步我没添加的时候也能照样运行,如果除了什么问题再添加,猜测是系统上动态库跟静态库共存时选择编译方式。(这个路径添加到settings >global compiler settings 里应该也是一样的效果,只不过一个应用于当前项目,一个应用于全部项目。)后面打开Project >Build options发现,新建项目的时候,compiler >settings里面other options自己会添加wx-config --cflags以及linker settings >other linker settings里面会自己添加wx-config --libs,使得项目的头文件和库可以链接,不用自己再手动添加,这点比GTK+要方便一点。

打包方式:没有试。静态编译的话可以直接把执行文件复制到同版本的ubuntu使用(系统库相同),而通过自己写脚本打包库的方式又不能打包系统库,所以对于不同版本的ubuntu相当于没用。Linuxdeployqt只能打包QT项目,用不了。有一个猜想但是没有尝试:就是通过手动写脚本打包系统库,然后用patchelf更改执行文件的查找库的路径,或许能够成功。但是又出现了新的问题,安装静态wxWidgets的是14.04的ubuntu,ubuntu14.04没法安装patchelf。

gtkmm:

版本gtkmm3
根据官网描述,在安装前要先安装GTK+等等一些依赖包,但是在ubuntu下用sudo apt-get install libgtkmm-3.0-dev会把相关的依赖一起安装,所以不用先特地安装,如果实在不放心,可以在安装完后检查一下依赖包的安装情况,这里附带一下怎么找要安装的包对应的命令,https://ubuntu.pkgs.org/在这个网站上搜索要安装的包,搜到之后点进去有具体的命令描述。
安装项目管理工具 sudo apt-get install pkg-config (印象中在安装gtkmm的时候会同时安装,装完gtk+时用pkg-config -–version看一下安装情况,如果没有就再安装pkg-config) # gtkmm版本查看 pkg-config --modversion gtkmm-3.0
(选择安装)GTk帮助文档 sudo apt-get install devhelp
安装codeblocks,sudo apt-get install codeblocks。(codeblocks是一个代码编辑器,并且可以进行编译调试。)
codeblocks的编译器设置。在settings(设置)-> compiler settings (编译器)里进行编译器设置,先在selected compiler(选择的编译器)里选GCC GUN compiler,然后点copy按钮复制一个,重命名为GCC GUN compiler gtkmm,并设置为默认编译器,点击 set as default ,然后下面进行配置,如果compiler flags里没有勾选,要根据自己机子上安装的编译器支持的C++语言标准进行勾选,我的机子是ubuntu14.04,勾选的是-std = C++11这个,在 Compiler settings -> Other options -> 添加pkg-config --cflags gtkmm-3.0(目的是添加include),在linker settings -> Other linker options 中也添加 pkg-config --libs gtkmm-3.0`(目的是添加lib)。
安装图形化界面辅助工具glade,sudo apt-get install glade直接安装。
目前编译出来的执行文件可以直接复制到其他版本ubuntu上使用,不需要打包。

 类似资料: