如果您正在交叉編譯比libc(glibc)更多依賴的任何東西,它將變得更加複雜。你需要已經交叉編譯所有的依賴關係。而交叉編譯器工具鏈和所有幫助器構建程序和腳本都需要知道如何找到這些依賴關係(交叉編譯的庫和頭文件)。
您需要已經交叉編譯libogg(及其依賴項)並將它們安裝到交叉編譯根目錄中。主機(arm7)系統不能使用構建系統中的頭文件和庫。他們必須保持分開。另外,如果你想擁有共享對象庫(* .so)而不僅僅是靜態庫,那麼存在一組全新的複雜問題。例如,雖然交叉編譯器工具鏈包含交叉編譯的libc作爲工具鏈的一部分,但您仍然需要主機系統的libc。作爲工具鏈一部分的libc可用於此目的,但其結構的方式與主機系統不同。有時候人們會複製和重新排列這些文件,但通常人們只是編譯並安裝一個新的glibc。
總而言之,你所看到的兩個錯誤是因爲配置腳本無法找到交叉編譯的libogg庫。如果您還沒有,則需要交叉編譯libogg(和依賴項)並將它們安裝到您的目標根目錄中。然後,你需要告訴配置腳本你的交叉編譯頭文件(是的,頭文件是特定於體系結構的)並且庫位於你的目標根目錄中。通常使用CFLAGS,LDFLAGS,CXXFLAGS等(不--PREFIX),但有可能是你還需要設置影響之類的東西pkg配置等,你已經建立了各自的依賴後,其他環境變量,那麼你就需要獲得makefile將依賴項安裝到根目錄。通常這是通過make DESTDIR=[root] install
完成的,但是一些makefile有自己的機制(或沒有適當的備用安裝機制)。
您可能還需要重寫某些配置檢查(使用環境變量)寫得不好,並沒有很好的交叉編譯的默認值。這些變量通常ac_cv_開始*
所以基本過程是爲你需要(按照相關性順序)封裝做到這一點:
export CFLAGS=-I[root]/usr/include LDFLAGS=-L[root]/usr/lib CXXFLAGS=-I[root]/usr/include
export ac_cv_[test1]=[yes|no] ac_cv_[test2]=[yes|no] ...
./configure --host=[arm7-blah-blah]
make
make DESTDIR=[root] install
好運。一旦你感到舒服標準的交叉編譯,那麼你將準備採取真正的黑色藝術,在Canadian cross ;-)
哪個檢查失敗? – kanaka 2011-03-31 19:28:13
檢查oggpackB_read ......沒有 配置:錯誤:新版本libogg(1.1或更高版本)需要 – ggambett 2011-04-01 13:37:41
的config.log說 LD:警告:目錄 '$ {exec_prefix}/lib目錄' 以下-L找不到 LD:警告:在/usr/local/lib/libogg.dylib中,文件是爲i386構建的,它不是被鏈接的體系結構(armv7) 它試圖鏈接到/ usr/local/lib而不是/ usr/local/ios/lib,雖然AFAIK我有正確設置每個標誌:S – ggambett 2011-04-01 13:39:11