1、因为用到了`pkg-config --cflags gtk+-2.0 cairo gthread-2.0`,提示Package gtk+-2.0 was not found in the pkg-config search path.
Perhaps you should add the directory containing `gtk+-2.0.pc' to the PKG_CONFIG_PATH environment variable。这个比较简单,添加PKG_CONFIG_PATH环境变量即可,我在Makefile开头添加了这样一句话
export PKG_CONFIG_PATH=/usr/local/tinyX+GTK/lib/pkgconfig
因为我的Gtk+-2.0.pc在这个目录里
2、第一步弄好之后,可以编译了,不过链接的时候出现N多函数未定义,最后跳出collect2: 错误: ld 返回 1的错误,路径肯定不会错,因为已经用-L指定了库的路径,而且在Debian下是可以编译通过的。百度了下有人也碰到过类似问题,居然这样就解决了,原来我是这么写的
$(CC) $(LDLIBS) -lts -lpthread -lXtst -o $(program) $(OBJS) libversion.a
解决方法只是把位置换了一下,改成这样
$(CC) -o $(program) $(OBJS) libversion.a $(LDLIBS) -lts -lpthread -lXtst
把程序的位置跟库的位置交换了一下,这个编译错误就没了,具体原因还没搞明白。
3、再Make一下,还剩一个错误了
/usr/bin/ld: note: 'XKeysymToKeycode' is defined in DSO /usr/local/tinyX+GTK//lib/libX11.so.6 so try adding it to the linker command line
/usr/local/tinyX+GTK//lib/libX11.so.6: could not read symbols: 无效的操作
这个再加上一个-lX11就可以了,不知道为什么原来Debian下不用这么写。
4、再编译就可以通过了,执行的时候会跳出这个错误 error while loading shared libraries: libts-0.0.so.0: cannot open shared object file: No such file or directory,这是因为LD_LIBRARY_PATH没有设置,在终端执行
export LD_LIBRARY_PATH=/usr/local/tinyX+GTK/lib
即可,如果把这个export写到makefile里,执行的时候并没有起作用,make之后,环境变量里并没有LD_LIBRARY_PATH,要在终端执行一下才可以。