在Linux/Uubuntu 10.10上交叉编译用于MIPS的OpenLDAP



我正试图使用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

最新更新