关于在嵌入式设备上运行编译好的程序因错误:Permission denied 而无法执行的问题的解决方法

问题叙述

在虚拟机上使用对应交叉编译工具链编译过的程序按道理来说应该可以在嵌入式Ubuntu设备上运行了,但是我在将编译好的程序在嵌入式设备上运行的时候报错了,出现的错误是:

-bash: ./hello-world: Permission denied

解决方法

Permission denied的汉语翻译:拒绝访问/没有权限
猜测其类似于Windows中的只读文件,无法对其进行操作,寻找提升文件权限的命令
结果:chmod
解决方法:

chmod 777 hello-world //设置hello-world文件对所有用户均可读写、执行

或:

chmod +x hello-world //设置hello-world文件对所有用户均可执行

chmod用法详解

Linux/Unix 的文件调用权限分为三级 : 文件拥有者、群组、其他。利用 chmod 可以藉以控制文件如何被他人所调用。

语法

chmod [-cfvR] [--help] [--version] mode file

参数说明
mode : 权限设定字串,格式如下 :
[ugoa…][±=][rwxX]
其中:
改变权限的对象:

u 表示该文件的拥有者
g 表示与该文件的拥有者属于同一个群体(group)者
o 表示其他以外的人
a 表示这三者皆是

权限操作类型:

+表示增加权限
-表示取消权限
= 表示唯一设定权限
 r 表示可读取
 w 表示可写入
 x 表示可执行
 X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行。

其他参数说明:

-c : 若该文件权限确实已经更改,才显示其更改动作
-f : 若该文件权限无法被更改也不要显示错误讯息
-v : 显示权限变更的详细资料
-R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)
--help : 显示辅助说明
--version : 显示版本

示例:

chmod a+rwx hello-world //表示将文件hello-world设置为可供左右用户实现读写、执行。

mode中没有加用户默认对所有用户生效
同时mode还可以使用数字表示

chmod abc file

其中a,b,c各为一个数字,分别表示User、Group、及Other的权限
a、b、c所赋予的数字及代表改类型用户的权限,
其中:
r=4,w=2,x=1
若要rwx属性则4+2+1=7
若要rw 属性则4+2=6
若要rx 属性则4+1=5
示例:

chmod 777 hello-world //表示将文件hello-world设置为可供所有用户读写、执行。
原创文章 9 获赞 1 访问量 601

猜你喜欢

转载自blog.csdn.net/hengxing666/article/details/105663174