跟着<操作系统真象还原>, 要安装bochs, 我傻乎乎地想跟书上一样就好了. 结果, 大错特错, 折腾了很久. 报错是这个:
gtk/gtk.h: No such file or directory
#include <gtk/gtk.h>
没有这个头文件, 网上搜出来, 安装
sudo apt-get install libgtk2.0-dev
还是报错. 我按照网上的指示, 看有没有这个文件夹, /usr/include/gtk
确实有.
我看了看这篇博客, 其实跟着他这个做没问题. 那就是在bochs目录下的gtk目录下, 修改Makefile的104行(可能有所不同, 反正是编译命令), 末尾加上pkg-config --cflags --libs gtk+-2.0
. 我用的是另一种方式, 查找gui下的Makefile下的, -I出现的地方, 加上了-I /usr/include/gtk-2.0/gtk
, 也解决了编译问题.
不过报出了新的错, 这次是链接错误:
error adding symbols: DSO missing from command line
这个花费了我大量时间, 找到了这篇博客.
我发现无论是bochs下, 还是gui下的Makefile, LIBS都比它少得多. 我怀疑是这个Makefile本就残缺不全. 我将信将疑把这个博客上的LIBS敲上去了.
LIBS = -lgtk-x11-2.0 -lgdk-x11-2.0 -lz -lrt -lm -lpthread -lfreetype -lglib-2.0 -lgobject-2.0 -lfontconfig -lpango-1.0 -lcairo -lgdk_pixbuf-2.0 -lpangocairo-1.0 -lpangoft2-1.0 -lgio-2.0 -latk- 1.0
然后就不报链接错误了. make install后报出, 路径找不到, 实际上是需要手动设置安装路径your_path, 我安装在了home下.
其实这个过程远没有我说的这么轻易, 我踩了很多坑, 因为试了很多不work的博客. 还是搞懂c/c++编译命令重要, 惭愧. 我的问题是, 链接库这些我还没搞懂. 还有很多需要学习的.