2013-02-06 131 views
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 allEXE目錄運行,特別是當運行下面的命令

/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的經驗並不存在,而我在解決鏈接器問題方面的經驗並不廣泛。

任何幫助表示讚賞,並在必要時我可以提供任何其他信息。先謝謝你!

回答

0

也許值得運行

libtoolize --copy --ltdl

在unixODBC的根目錄建立樹的libtool的本地版本複製

+0

謝謝您的幫助。但那並不奏效。我在運行腳本之前運行它,但是當'make all'啓動時,出現以下錯誤: 'libtool:版本不匹配錯誤。這是libtool的2.4.2,但這個LT_INIT的 定義來自libtool的2.2.6b。您應該使用libtool 2.4.2中的宏重新創建aclocal.m4,然後再次運行autoconf。「還有其他建議嗎?再次感謝! – Rob

+0

當我必須使用自動工具在Mac上構建東西時,我通常只安裝最新穩定的GNU自動工具。通常,安裝了特定OS X版本的自動工具太古老,無法在該版本的OS X上實際使用,特別是GNU libtool,它似乎被打破了一些規律。 – ldav1s