我正试图使用mipsel-angstrom-linux工具链在我的Ubuntu 10.10开发机器上交叉编译openldap-2.4.23,因为它依赖于我真正想要使用的库ptlib-2.10.1/opal-3.1-1。
我已经设置了一个build.sh
脚本,内容如下所示。它
#!/bin/sh
. /usr/local/angstrom/mipsel/environment-setup
./configure CC=mipsel-angstrom-linux-gcc --host=mipsel-angstrom-linux --disable-bdb --disable-hdb --with-yielding_select=no &&
make depend &&
rm -rf install &&
mkdir install &&
make &&
make install DESTDIR=$PWD/install &&
sudo make install DESTDIR=/usr/local/angstrom/mipsel/mipsel-angstrom-linux
构建工作正常,但由于以下原因而中止:
../../libtool: line 3297: cd: =/usr/lib: No such file or directory
libtool: link: warning: cannot determine absolute directory name of `=/usr/lib'
grep: =/usr/lib/libz.la: No such file or directory
/bin/sed: can't read =/usr/lib/libz.la: No such file or directory
libtool: link: `=/usr/lib/libz.la' is not a valid libtool archive
make[2]: *** [libldap.la] Error 1
make[2]: Leaving directory `/home/markus/Documents/VoIP/openldap-2.4.23/libraries/libldap'
make[1]: *** [all-common] Error 1
make[1]: Leaving directory `/home/markus/Documents/VoIP/openldap-2.4.23/libraries'
make: *** [all-common] Error 1
我在使用其他库时也遇到了问题,添加LIBTOOL=libtool
曾经可以解决一个问题。我还尝试按照其他资源的建议编译我自己的mipsel-angstrom-linux-libtool
,但没有成功。
我在源代码/构建目录中做了一个grep libz -r .
,但找不到任何东西,我不知道该在哪里查找。
我希望有人能给我一个提示,让我解决我的问题。
编辑:使用代码源工具链,我得到result.c:961: undefined reference to lutil_memcmp'
。
只有当系统上安装的libtool与openldap和依赖项附带的不同时,使用LIBTOOL=libtool
才有帮助。但事实上,这个问题与libtool有关,而不是像错误所表明的那样与libz有关。如果你仔细查看错误消息,你会看到一个额外的=
:
libtool: link: warning: cannot determine absolute directory name of `=/usr/lib'
CCD_ 8不是目录。这个=
是从哪里来的?我在libtool补丁中发现了一个libtool的补丁描述了新功能:
如果PATH以sysroot开头,请将其替换为=
我不知道这背后的原因是什么,但可以找到结果在你系统上的.la文件中,也许运行这个
grep "=/usr/lib" /usr/lib/*.la
这取决于库的安装位置。您将看到dependency_libs的定义,其中可能包括串CCD_ 10,并且这是附加CCD_。
该怎么办?
发现错误的.la文件会发现它们属于哪个软件并使用CCD_ 12重建它们。
或者如果不起作用:
perl -p -i -e 's/(func_replace_sysroot_result=")=/$1/' ltmain.sh &&
perl -p -i -e 's/${lt_sysroot:+=}//' ltmain.sh
一切都好,
Peter