php编译安装:link: `ext/date/php_date.lo' is not a valid libtool objec

今天在安装php-5.3.10时,make报错:

ext/date/php_date.lo is not a valid libtool object。

查看libtool(由ltmain.sh生成)该错误是由于:

if (${SED} -e ’2q’ $arg | grep “^# Generated by .*$PACKAGE”) >/dev/null 2>&1; then 语句不成立而后续引起的。

正确的lo文件应该如下:

# ext/date/php_date.lo – a libtool object file

# Generated by ltmain.sh – GNU libtool 1.5.26 (1.1220.2.492 2008/01/30 06:40:56)

#

# Please DO NOT delete this file!

# It is necessary for linking the library.

# Name of the PIC object.

pic_object=none

# Name of the non-PIC object.

non_pic_object=’php_date.o’

初始的5行,是有libtool文件中compile时添加的。在用安装脚本运行configure和make时,经常发现未添加成功。这就导致了后面的错误。

而手工make clean后再 make,就没有问题了。

原因未知。会是因为多核、多进程吗?对Makefile和libtool的执行顺序不是很了解,无法确切定位。

当脚本执行时,查看进程如下:

admin 20630 0.0 0.0 65068 2420 pts/2 R+ 15:17 0:00 /bin/sh /data/home/admin/src/php-5.3.10/libtool –silent –preserve-dup-deps –mode=compile gcc -IZend/ -I/data/home/admin/src/php-5.3.10/Zend/ -DPHP_ATOM_INC -I/data/home/admin/src/php-5.3.10/include -I/data/home/admin/src/php-5.3.10/main -I/data/home/admin/src/php-5.3.10 -I/data/home/admin/src/php-5.3.10/ext/date/lib -I/data/home/admin/src/php-5.3.10/ext/ereg/regex -I/usr/include/libxml2 -I/data/home/admin/src/php-5.3.10/ext/mbstring/oniguruma -I/data/home/admin/src/php-5.3.10/ext/mbstring/libmbfl -I/data/home/admin/src/php-5.3.10/ext/mbstring/libmbfl/mbfl -I/usr/local/libmcrypt/include -I/usr/local/mysql//include/mysql -I/usr/local/mysql/include/mysql -I/data/home/admin/src/php-5.3.10/ext/sqlite3/libsqlite -I/data/home/admin/src/php-5.3.10/TSRM -I/data/home/admin/src/php-5.3.10/Zend -I/usr/include -g -O2 -fvisibility=hidden -c /data/home/admin/src/php-5.3.10/Zend/zend_hash.c -o Zend/zend_hash.lo

admin 20636 0.0 0.0 65068 2420 pts/2 R+ 15:17 0:00 /bin/sh /data/home/admin/src/php-5.3.10/libtool –silent –preserve-dup-deps –mode=compile gcc -IZend/ -I/data/home/admin/src/php-5.3.10/Zend/ -DPHP_ATOM_INC -I/data/home/admin/src/php-5.3.10/include -I/data/home/admin/src/php-5.3.10/main -I/data/home/admin/src/php-5.3.10 -I/data/home/admin/src/php-5.3.10/ext/date/lib -I/data/home/admin/src/php-5.3.10/ext/ereg/regex -I/usr/include/libxml2 -I/data/home/admin/src/php-5.3.10/ext/mbstring/oniguruma -I/data/home/admin/src/php-5.3.10/ext/mbstring/libmbfl -I/data/home/admin/src/php-5.3.10/ext/mbstring/libmbfl/mbfl -I/usr/local/libmcrypt/include -I/usr/local/mysql//include/mysql -I/usr/local/mysql/include/mysql -I/data/home/admin/src/php-5.3.10/ext/sqlite3/libsqlite -I/data/home/admin/src/php-5.3.10/TSRM -I/data/home/admin/src/php-5.3.10/Zend -I/usr/include -g -O2 -fvisibility=hidden -c /data/home/admin/src/php-5.3.10/Zend/zend_hash.c -o Zend/zend_hash.lo

有时,两个libtool同时运行,且命令完全一致!!查看pstree:

有时:

|-sshd-+-sshd—sshd—bash—install.sh—2*[make---sh---gcc---cc1]

有时:

|-sshd-+-sshd—sshd—bash—install.sh-+-make—sh

| | `-make—sh—gcc—cc1

这时,再ps axu|grep make,发现居然同时有make和 make install两个命令!!

查看脚本,果然是一个手误造成的错误:

make & make install。&位操作符导致的错误!应该是make && make install。

bash的位操作符有待深入研究,目前先把脚本跑起来再说。
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值