私は 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 を使用した経験はまったくなく、リンカの問題に対処した経験も豊富ではありません。
必要に応じて追加情報を提供できます。前もって感謝します!