delphij's Chaos

选择chaos这个词是因为~~实在很难找到一个更合适的词来形容这儿了……

30 May 2012

GNU libtool 和 FreeBSD 10

FreeBSD 开始用 10 以上的版本号有一段时间了。这个变动立刻导致了大量 ports 无法编译,多数情况下是因为开发者采用了较早版本的 libtool 导致的,具体来说,是类似下面的代码:


    case $host_os in
    freebsd[123]*) objformat=aout ;;
    *) objformat=elf ;;
    esac

解法是在星号前面加个小数点。

前段时间的半夜 make 总是在 OpenOffice 上通不过,结果发现是同样的原因。囧死了……当初匹配的时候打个.会死吗?

(这个问题已经在 libtool 2.4.2 以上版本中修正)。教训是,即使是代码生成器,重复的代码导致维护成本的增加。


Archived: 2 Comments

Solrex | May 29, 2012 11:56 PM

其实干脆改成 freebsd.* 更合适吧。

Xin LI replied to comment from Solrex | May 30, 2012 12:04 AM

不合适吧,FreeBSD 3.0 之前采用的是 aout 格式而不是 ELF 格式(其实真正比较重要的是早期版本不支持 shared object)。匹配 1* 显然是不对的。

当然从现实角度考虑,这个检查完全可以去掉了。。。