使用libtool碰到2个奇怪的问题,还没解决。
1 编译lib的时候,在configure下找到-lmpg123在/usr/local/lib下,但是libtool最后链接的时候对-lmpg123选项展开成了-L/usr/loca/lib/libmpg123.so, 又去掉了路径,变成/libmpg123.so, 然后编译不通过。现在解决的方法就是手动修改Makefile,把-lmpg123改成-L/usr/loca/lib/libmpg123.so。算是骗过去了,原因追了一下libtool,没能找到。
2 编译bin的时候,虽然在项目目录的Makefile.am下设了SUBDIRS=src,但是编译时在src/下编出了BIN文件后,在项目目录下libtool又link了一次,然后报找不到main,因为项目目录的Makefile.am里xx_SOURCES = 没设,现在直接忽视了这个问题。
调试的心得:
1 libtoolize执行后,会在项目目录下产生一个libtool的shell脚本,最后libtool就是执行这个脚本
2 libtool 编译完*.o后会执行 /bin/sh ./libtool --tag=CC --mode=link gcc -g -O2 -o love -lvorbisfile -lmodplug -lphysfs -lfreetype -lIL -llua -lopenal -lGL -lSDL -lm -L/usr/local/lib/libmpg123.so ; 然后libool的shell脚本去解析这个命令。
3 可用/bin/sh -x 。/libtool 跟踪shell脚本,或者用bashdb来调试,虽然bashdb似乎很慢。