1
我在Mac上,和我有libtool的嘗試編譯的unixODBC的ARM7(對我來說,iOS中使用),當鏈接問題。我下載了unixODBC from their website,我使用下面的腳本來配置它並創建它。問題交叉編譯的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
我縮小到錯誤時make all
在EXE目錄運行,特別是當運行下面的命令
/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的經驗並不存在,而我在解決鏈接器問題方面的經驗並不廣泛。
任何幫助表示讚賞,並在必要時我可以提供任何其他信息。先謝謝你!
謝謝您的幫助。但那並不奏效。我在運行腳本之前運行它,但是當'make all'啓動時,出現以下錯誤: 'libtool:版本不匹配錯誤。這是libtool的2.4.2,但這個LT_INIT的 定義來自libtool的2.2.6b。您應該使用libtool 2.4.2中的宏重新創建aclocal.m4,然後再次運行autoconf。「還有其他建議嗎?再次感謝! – Rob
當我必須使用自動工具在Mac上構建東西時,我通常只安裝最新穩定的GNU自動工具。通常,安裝了特定OS X版本的自動工具太古老,無法在該版本的OS X上實際使用,特別是GNU libtool,它似乎被打破了一些規律。 – ldav1s