1

実際にライブラリであるptlib-2.10.1/opal-3.10.1に依存しているため、mipsel-angstrom-linuxツールチェーンを使用してUbuntu10.10開発マシンでopenldap-2.4.23をクロスコンパイルしようとしています。使いたい。

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たが、うまくいきませんでした。

source / buildディレクトリでを実行しましたgrep libz -r .が、何も見つかりませんでした。どこを見ればよいかわかりません。

誰かが私の問題を解決するためのヒントをくれたらいいのにと思います。

編集:コードソースツールチェーンを使用して取得しresult.c:961: undefined reference to lutil_memcmp'ます。

4

1 に答える 1

2

LIBTOOL=libtoolシステムにインストールされている libtool が、openldap および依存関係に同梱されているものと異なる場合にのみ、使用が役立ちます。しかし実際には、この問題は libtool に関連しており、エラーが示すように libz には関連していません。エラー メッセージを詳しく見ると、追加のメッセージが表示されます=

libtool: link: warning: cannot determine absolute directory name of `=/usr/lib'

これ=/usr/libはディレクトリではありません。これはどこ=から来たのですか?libtool-patchesで、新しい機能を説明するlibtoolへのパッチを見つけました。

PATH が sysroot で始まる場合は、= に置き換えます。

この背後にある理由はわかりませんが、結果はシステムの .la ファイルで見つけることができます。おそらくこれを実行してください

grep "=/usr/lib" /usr/lib/*.la

ライブラリをインストールする場所に応じて、それらを見つけます。おそらくとりわけ文字列を含むdependency_libsの定義が表示されます。=/usr/libこれが追加の=由来です。

何をすべきか?

間違った .la ファイルを見つけた場合、それらが属するソフトウェアを見つけて、.la ファイルを使用して再構築しますLIBTOOL=/path/to/libtool2.2

またはそれがうまくいかない場合:

perl -p -i -e 's/(func_replace_sysroot_result=")=/$1/' ltmain.sh &&
perl -p -i -e 's/\$\{lt_sysroot:\+=\}//' ltmain.sh

ではごきげんよう、

ピーター

于 2011-09-29T11:44:49.130 に答える