1

我已經將一些有用的免費/開源工具移植到Android。一個是八度,另一個是gnuplot。他們一起工作,提供像免費(如在演講)和免費(如在啤酒)功能的Matlab。我用有趣的方式將它們包裝在應用程序中。具體而言,問題包括使用Jelly Bean時的Android應用程序可執行文件

1)我在libs/armeabi目錄中包含可執行文件和共享庫。由於android命名約定,必須給他們有趣的名字。

2)我創建目錄bin /和mylib/。我給他們完全的權限。

3)我創建鏈接從bin/到解壓縮的lib/目錄中的可執行文件。我給他們正確的名字和完整的權限。

4)我創建鏈接從mylib/到解壓後的lib/目錄中的共享庫。我給他們正確的名字和完整的權限。

5)然後我用ld-linux.so.3這是目前在mylib/目錄和--library-path選項在mylib/目錄指向從Android終端仿真器啓動可執行的圖書館之一。

八度完美的作品在所有版本的Android這樣做,但是當我嘗試啓動它搭載Jelly Bean的時候只有gnuplot的給出了這樣的錯誤:

error while loading shared libraries: gnuplot: failed to map segment 
from shared object: Operation not permitted. 

那麼,爲什麼我有這樣的錯誤之一這兩個可執行文件以相同的方式創建?爲什麼只在果凍豆?另外,在JB上,如果我讓自己成爲超級用戶,那麼這一切都會再次發揮作用。

關於如何調試的任何想法?我已確認所有文件都在那裏,並具有我希望他們擁有的權限。

請幫忙。如果你這樣做,你會幫助一個免費的,開源的,教育和有用的應用程序。

+0

試過用不同的方式解釋它,或許更好,在這裏:http://stackoverflow.com/questions/13502156/what-are-possible-causes-of-failed-to-map-segment-from-shared-object-operation – corbin

+0

我不知道這是否可行,但你可以嘗試在你認爲發生此錯誤的特定行上用「console.writeline」和/或「Log.d」重新編譯gnuplot庫並寫出一些信息。 –

+0

查看JellyBean源代碼,我看到字符串「從共享對象映射段失敗」嵌入到二進制預構建/ gcc/linux-x86/host/i686-linux-glibc2.7-4.6/sysroot/usr/lib中/ld-2.7.so。有誰知道如何找到建立的確切來源?讀源可能會提供線索。它是否存儲在android源網站的某個地方?我找不到它。 – emrys57

回答

0

問題在於如何編譯可執行文件。他們需要使用交叉編譯器進行編譯,該編譯器能夠正確支持較新的arm設備。我使用的編譯器生成的可執行文件只能用於arm設備的一個子集。這個問題不是與Android的不同版本。

相關問題