You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Termux无法在SD卡运行程序的原因及非Root解决办法咨询

问题分析与解决方法

现象复现

你遇到的执行报错场景如下:

u0_a238@localhost  ~/storage/external-1 # cat test.c
#include <stdio.h>

int main()
{
        printf("Hi!");
        return 0;
}
u0_a238@localhost  ~/storage/external-1 # gcc test.c -o test
u0_a238@localhost  ~/storage/external-1 # ./test
zsh: permission denied: ./test
✘ u0_a238@localhost  ~/storage/external-1 # bash ./test
./test: ./test: cannot execute binary file
✘ u0_a238@localhost  ~/storage/external-1 # sh ./test
./test: 1: Syntax error: word unexpected (expecting ")")
u0_a238@localhost  ~/storage/external-1 # mv test ~
u0_a238@localhost  ~/storage/external-1 # ~/test
Hi!%

原因

这确实是Android系统的权限限制导致的:

  • Android外部存储(SD卡)默认挂载时不带exec(执行)权限,系统为了安全,禁止在外部存储上运行二进制程序。
  • 同时SELinux安全策略也会限制普通应用(包括Termux)在外部存储上执行可执行文件,即便手动添加chmod +x权限也无法绕过。

无需Root的解决方法

方法1:绑定挂载(Bind Mount)

利用Termux的命名空间权限,把SD卡目标目录绑定到Termux内部存储的目录,让该目录继承内部存储的执行权限:

  1. 在Termux内部创建挂载目录:
    mkdir -p ~/sd-exec
    
  2. 绑定SD卡目录到挂载点(替换/storage/external-1/my-projects为你实际的SD卡程序目录):
    mount --bind /storage/external-1/my-projects ~/sd-exec
    
  3. 后续所有编译、运行操作都在~/sd-exec目录下进行即可,比如:
    cd ~/sd-exec
    gcc test.c -o test
    ./test
    
  4. 为避免每次重启Termux都重新挂载,可把绑定命令添加到Shell配置文件:
    • bash用户:echo 'mount --bind /storage/external-1/my-projects ~/sd-exec' >> ~/.bashrc
    • zsh用户:echo 'mount --bind /storage/external-1/my-projects ~/sd-exec' >> ~/.zshrc

方法2:使用FUSE OverlayFS挂载

适合需要在SD卡保留文件、同时拥有执行权限的场景,需先安装工具:

  1. 安装fuse-overlayfs包:
    pkg install fuse-overlayfs
    
  2. 创建必要目录结构:
    mkdir -p ~/overlay/upper ~/overlay/work ~/overlay/mount
    
  3. 挂载SD卡目录到合并挂载点(替换/storage/external-1/my-projects为你的SD卡目录):
    fuse-overlayfs -o lowerdir=/storage/external-1/my-projects,upperdir=~/overlay/upper,workdir=~/overlay/work ~/overlay/mount
    
  4. 之后在~/overlay/mount目录下编译、运行程序即可,所有修改会保存在~/overlay/upper目录,原SD卡文件也能正常访问。

关于APK安装到SD卡

无需Root的情况下可这样操作:

  1. 先确保Termux获取存储权限:
    termux-setup-storage
    
  2. 使用pm命令安装时指定-s参数(表示安装到外部存储):
    pm install -s /storage/external-1/my-app.apk
    
    注意:不是所有APK都支持安装到SD卡,需要APK的AndroidManifest.xml中声明android:installLocation="auto"或android:installLocation="preferExternal"。

内容的提问来源于stack exchange,提问作者ho tian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 19:53:19