我已經將一些有用的免費/開源工具移植到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上,如果我讓自己成爲超級用戶,那麼這一切都會再次發揮作用。
關於如何調試的任何想法?我已確認所有文件都在那裏,並具有我希望他們擁有的權限。
請幫忙。如果你這樣做,你會幫助一個免費的,開源的,教育和有用的應用程序。
試過用不同的方式解釋它,或許更好,在這裏:http://stackoverflow.com/questions/13502156/what-are-possible-causes-of-failed-to-map-segment-from-shared-object-operation – corbin
我不知道這是否可行,但你可以嘗試在你認爲發生此錯誤的特定行上用「console.writeline」和/或「Log.d」重新編譯gnuplot庫並寫出一些信息。 –
查看JellyBean源代碼,我看到字符串「從共享對象映射段失敗」嵌入到二進制預構建/ gcc/linux-x86/host/i686-linux-glibc2.7-4.6/sysroot/usr/lib中/ld-2.7.so。有誰知道如何找到建立的確切來源?讀源可能會提供線索。它是否存儲在android源網站的某個地方?我找不到它。 – emrys57