You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Termux执行C++文件遇权限拒绝求助(Nexus7 Lineage OS)

解决Termux中执行C++程序权限拒绝的问题

兄弟,我之前在Termux里折腾C++程序的时候也碰到过一模一样的权限问题,给你几个实用的排查和解决步骤:

第一步:检查可执行文件的权限

首先最常见的原因是你编译出来的二进制文件没有可执行权限。你可以先在Termux里进入文件所在的目录,然后运行:

ls -l 你的程序文件名

比如你的程序叫main,就输入ls -l main。看输出里的权限列,比如如果是-rw-r--r--,说明没有可执行权限(缺了x标记)。这时候给文件加上可执行权限就行:

chmod +x 你的程序文件名

加完之后再用ls -l确认一下,权限变成-rwxr-xr-x就对了,这时候再试试执行./你的程序文件名

第二步:如果加权限还是不行?检查文件所在目录

如果上面的步骤做完还是提示权限拒绝,那大概率是Android系统的安全限制在搞鬼:Termux允许你读写外部存储(比如/storage/emulated/0下的Drive下载文件夹),但Android默认禁止在外部存储目录里执行任何二进制文件——这是系统的安全规则,和Termux的存储权限没关系。

解决这个问题最简单的办法就是把你的C++文件和编译好的程序移到Termux自己的内部目录里,比如:

  1. 先创建一个专属的C++工作目录:
mkdir ~/cpp_workspace
  1. 把你的.cpp.h文件和编译好的程序移过去(假设你的文件存在/storage/emulated/0/Drive/C++目录下):
mv /storage/emulated/0/Drive/C++/*.cpp ~/cpp_workspace/
mv /storage/emulated/0/Drive/C++/*.h ~/cpp_workspace/
mv /storage/emulated/0/Drive/C++/你的程序文件名 ~/cpp_workspace/
  1. 进入这个目录再执行程序:
cd ~/cpp_workspace
./你的程序文件名

这样应该就能正常运行了。

额外提示

以后编辑和编译的时候,尽量直接在Termux的内部目录(比如~/cpp_workspace)里操作,避免再碰到外部存储的权限限制问题。如果需要从Drive同步文件,可以把文件下载到外部存储后再移到Termux内部目录,新手先搞定基础的操作流程就好。

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

火山引擎 最新活动