从 https://launchpad.net/ubuntu/vivid/+source/wmctrl 下载源码包,包括三个文件
wmctrl_1.07-7.dsc | 1.7 KiB | 4a42ab2d5acfee709bdd3079d076fc54 |
wmctrl_1.07.orig.tar.gz | 85.8 KiB | 1fe3c7a2caa6071e071ba34f587e1555 |
wmctrl_1.07-7.debian.tar.gz | 4.8 KiB | ce8649ad63886685b9d076ded8e0ea39 |
.dsc文件是对文件包信息的描述。在调用dpkg-source
命令,根据dsc文件中的信息,将源码包解压到同名目录中,应用程序的源代码就在这里。tar.gz文件是源码包.
dpkg-source -x wmctrl_1.07-7.dsc 解压源码包;
进入目录,执行./configure
提示缺少 libxmu相关组件,从Ubuntu组件中心下载安装
sudo dpkg -i libxmu6_1.1.1-1_i386.deb
sudo dpkg -i libxmu-headers_1.1.1-1_all.deb
sudo dpkg -i libxmu-dev_1.1.1-1_i386.deb
编译出错:
main.c:37:18: fatal error: glib.h: 没有那个文件或目录
#include <glib.h>
找到 glib.h路径,修改Makefile,
DEFAULT_INCLUDES = -I. -I$(srcdir) -I/usr/include/glib-2.0/
再次执行Make,
提示
/usr/include/glib-2.0/glib/gtypes.h:34:24: fatal error: glibconfig.h: 没有那个文件或目录
#include <glibconfig.h>
找到glibconfig.h 再次修改Makefile,
DEFAULT_INCLUDES = -I. -I$(srcdir) -I/usr/include/glib-2.0/ -I/usr/lib/i386-linux-gnu/glib-2.0/include/
再次编译,出现很多
wmctrl-1.07/main.c:467:对‘g_locale_from_utf8’未定义的引用
wmctrl-1.07/main.c:459:对‘g_locale_to_utf8’未定义的引用
wmctrl-1.07/main.c:473:对‘g_strdup’未定义的引用
g_**函数是glib的库函数。显然,编译没有找到这个库。
修改Makefile,
LDADD = -lSM -lICE -lX11 -lXmu /usr/lib/i386-linux-gnu/libglib-2.0.so
再次Make,
成功编译出wmctrl。
其它:
在 ./configure时如果出现
checking for GLIB -version >= 2.0.0... no
则 apt-cache search libglib, 按照输出结果
apt-get install libglib2.0-dev