1

私は Mac を使用しており、arm7 用に unixODBC をコンパイルしようとすると (iOS で使用するために)、libtool のリンクの問題が発生します。彼らの Web サイトから unixODBCをダウンロードし、次のスクリプトを使用して構成および作成しました。

#!/bin/sh

# unset some shell variables
unset CC
unset CFLAGS
unset CPP

# make arm target
export CC=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/arm-apple-darwin10-llvm-gcc-4.2
export CFLAGS="-isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk"
export CPP=/usr/bin/cpp

./configure --build=x86_64-apple-darwin12 --host=arm-apple-darwin10 --target=armv7 --enable-static --disable-shared

make all

./configure は問題なく動作しますが、途中make allで壊れます。次のエラーが表示されます。

Undefined symbols for architecture armv7:
  "_lt_libltdlc_LTX_preloaded_symbols", referenced from:
      _lt_dlinit in libodbc.a(libltdlc_la-ltdl.o)
ld: symbol(s) not found for architecture armv7

エラーをexemake allディレクトリで実行した場合、特に次のコマンドを実行した場合に絞り込みました

/bin/sh ../libtool --tag=CC --mode=link /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/arm-apple-darwin10-llvm-gcc-4.2 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk -pthread -o isql isql.o ../DriverManager/libodbc.la ../extras/libodbcextraslc.la  

なぜ失敗するのかよくわかりません。関数が存在することを確認しましたlt_dlinit。私が知る限り、すべてが正しく行われています。ただし、libtool を使用した経験はまったくなく、リンカの問題に対処した経験も豊富ではありません。

必要に応じて追加情報を提供できます。前もって感謝します!

4

1 に答える 1

0

多分走る価値がある

libtoolize --copy --ltdl

unixODBC ビルド ツリーのルートで、ローカル バージョンの libtool にコピーします。

于 2013-02-07T11:04:23.107 に答える