2014-04-07 32 views
0

我正面臨着這個問題,我試圖爲android應用程序構建本地庫。爲此,我有一個靜態庫(.a),它被鏈接到一個動態庫(.so)中。現在問題是靜態庫太大(超過2 GB)。當我編譯動態庫,它試圖鏈接到靜態庫,它會失敗,並出現以下錯誤:大.a文件沒有在android中連接

d:/adt/android-ndk-r9c/toolchains/arm-linux-androideabi-4.8/prebuilt/windows-x86_64/bin/../lib/gcc/arm-linux-androideabi/4.8/../../../../arm-linux-androideabi/bin/ld.exe: fatal error: E:\lib\libapplogic.a: pread failed: Invalid argument 

有沒有人遇到過這個問題?解析度?

+0

這個大小似乎相當荒謬,儘管它可能是也可能不是失敗的直接原因。你確定這個庫甚至是爲Android構建的嗎?沒有更合理的方法來實現您的目標 - 通過在庫構建過程中關閉未使用的功能,或者通過將代碼與代碼分開打包來實現目標? –

+0

我相信這個尺寸不是荒謬的。我有這麼多的代碼編譯成libapplogic.a。我可以選擇將它分成兩個庫,那是你的建議?我沒有選擇刪除功能或禁用代碼段。 – Bonton255

+0

你有兩千兆字節的代碼實際使用?也許你忘記了你的目標是**手機**?無論如何,如果你認真解決問題,首先要做的就是*暫時*大幅度削減或簡單的替代品,並嘗試將其鏈接起來。這會讓你知道問題出在哪裏。 –

回答

0

對於其他面臨此問題的人:我能夠使用--no-map-whole-files選項鍊接二進制文件。

相關問題