gtk安装和测试
linux的图形库有qt和gtk, qt功能强大,但是商用要付费。 gtk是个免费开源的,也不错。现在linux的类似windows办公环境基本是gtk编写的吧(我猜)。linux下的wps好像是用qt写的。
闲言少序,开始gtk.
先安装:
sudo yum install libgnomeui-devel
这个会安装一堆包。
sudo yum install gtk2 gtk2-devel gtk2-devel-docs
提示已经安装,难道是前面的一堆包包括了?不过查看了一下,似乎不包括,而是包括了gtk3-devel-3.22.30, 难道最新的gtk变成3.x版本了? gtk2.x已经过时了,不管了。
vim testgtk.c
#include <gtk/gtk.h>int main(int argc, char *argv[])
{GtkWidget *windows;gtk_init(&argc, &argv);windows=gtk_window_new(GTK_WINDOW_TOPLEVEL);gtk_widget_show(windows);gtk_main();return 0;
}
gcc -o test testgtk.c `pkg-config --libs --cflags gtk+-2.0`
./test
就会弹出一个小窗口,实验成功。说明可以显示windows.
有个小缺陷,关闭窗口进程也不退出。 gtk还需要继续研究。万里长征走出了第一步。
下面通过一个例子边学习gtk,边学习GDB调试线程锁。
参考链接:GitHub - gedulab/silklock: thread deadlock for GDB camp
ctrl+alt+T 打开一个终端窗口
mkdir gelabs
export https_proxy=proxy.xxx.com.cn:80
下载实验代码:
git clone https://github.com/gedulab/silklock.git
cd silklock/
我们今天这个案例是有图形界面的,图形界面代表了今天比较主流的一种客户端的应用形式,Linux下的图形界面仍然是比较复杂的,所以有图形界面,其实也给软件增加了一个纬度的复杂度。
代码因为有多个源文件,所以推荐大家使用make来构建。
这里有一个特殊的写法,就是用了`这个重音符号。重音符号是命令行中的一种约定,它会把pkg-config的结果替换进来,pkg-config后面跟的是GDK开发包的路径。如果不用pkg-config命令,手工写会比较长,所以这是构建比较复杂的软件包时一种方便的做法。
如果正常执行的话,就点New Task创建一个新任务,然后再点Start,它就会开始一个多线程的计算。这里是在计算拉卡托奇数。
异常情况就是大家选中一下Need Notify,需要做一个通知动作,把这个选中之后,同样是创建一个新任务,然后再点Start,这时候就会出现意外,看不到计算结果。如果仔细看,会发现下面还有一点异常的信息:“SEGMENT FAULT”,但是它没崩溃。--很不幸,在我的工作机器上崩溃了。
远程linux,mobaxterm是个好工具,好像gtk也能显示出来,安装上试试:
MobaXterm Xserver with SSH, telnet, RDP, VNC and X11 - Home Edition (mobatek.net)
ubuntu上要安装ssh MobaXterm连接Ubuntu:Network error: Connection refused_mobaxterm network error: connection refused-CSDN博客
sudo ps -e |grep ssh
sudo apt-get install openssh-server
systemctl restart ssh#开启ssh-server服务
ss -ntl#查看22端口是否开启