Linux environment on Android
基本環境
Android 系統預設的 library 路徑通常會在:
/system/lib/
/system/lib64/
/vendor/lib/
/vendor/lib64/
可以使用 LD_LIBRARY_PATH 和 LD_PRELOAD 來加入額外的 library。
Termux
- Repo:
- Site:
Termux 是在 Android 系統上建立 Linux 環境的專案, Termux packages 裡面支援多種常見專案的編譯設定。
Android 套件移植常見問題
編譯設定有問題,嘗試連結到 host 上的 library,造成 linker 失敗
Android 的 bionic libc 沒有 iconv 和 gettext/libintl 支援
沒有 SYSV semaphores 支援
沒有 SYSV shared memory 支援,但是可以使用 libandroid-shmem ,藉由 Android 的 ashmem 模擬
- Android linker 只支援 PIE (Position Independent Executables) 執行檔
Jelly Bean 加入 PIE 支援
Lollipop 移除 non-PIE 支援
某些 DT entry 不支援,會造成 linker 在執行期間噴許多 warning,可以用工具幫忙清理 binary