makefile 可执行权限被拒绝
makefile executable permission denied
我有一个 makefile,它创建一个可执行文件 ("ls") 并将其放在名为 bin 的文件夹中。但是,当我之后尝试 运行 该可执行文件时,出现错误:
"-bash: bin/ls: 权限被拒绝"
VPATH = src
CC = g++
CFLAGS =-c -Wall -Werror -ansi -pedantic
all: clean rshell
rshell: ls.cpp
$ mkdir -p ./bin
$ $(CC) $(CFLAGS) src/ls.cpp -o bin/ls
clean:
rm -rf bin
问题准确说明了错误所在:您新创建的 ls
可执行文件缺少可执行文件位。
在你的情况下,你明确地禁用了链接器,这几乎从来都不是一个好方法,除非你真的真的知道你在做什么。我的盲目猜测是您的源代码缺少 int main(int, char**)
函数,因此链接会给您一个错误(因为您无法使用标准链接器设置构建可执行文件,而标准链接器设置不完全是 main
).但是,在 CFLAGS
中使用 -c
,您既不会收到警告也不会收到可执行文件。
编辑:file ls
会显示类似
的内容
ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), not stripped
在使用 -c
编译的二进制文件上,而完全成熟的可执行文件将具有
ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=6cf260a90064be20cfa17ff5fefd7040254f79e1, not stripped
注意一个文件是如何 executable
;) 此外,它链接到 某物 ,其中包括在您的 ls
之前执行的启动代码的 main
功能。否则,OS 将不知道如何 运行 您的程序。
我有一个 makefile,它创建一个可执行文件 ("ls") 并将其放在名为 bin 的文件夹中。但是,当我之后尝试 运行 该可执行文件时,出现错误: "-bash: bin/ls: 权限被拒绝"
VPATH = src
CC = g++
CFLAGS =-c -Wall -Werror -ansi -pedantic
all: clean rshell
rshell: ls.cpp
$ mkdir -p ./bin
$ $(CC) $(CFLAGS) src/ls.cpp -o bin/ls
clean:
rm -rf bin
问题准确说明了错误所在:您新创建的 ls
可执行文件缺少可执行文件位。
在你的情况下,你明确地禁用了链接器,这几乎从来都不是一个好方法,除非你真的真的知道你在做什么。我的盲目猜测是您的源代码缺少 int main(int, char**)
函数,因此链接会给您一个错误(因为您无法使用标准链接器设置构建可执行文件,而标准链接器设置不完全是 main
).但是,在 CFLAGS
中使用 -c
,您既不会收到警告也不会收到可执行文件。
编辑:file ls
会显示类似
ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), not stripped
在使用 -c
编译的二进制文件上,而完全成熟的可执行文件将具有
ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=6cf260a90064be20cfa17ff5fefd7040254f79e1, not stripped
注意一个文件是如何 executable
;) 此外,它链接到 某物 ,其中包括在您的 ls
之前执行的启动代码的 main
功能。否则,OS 将不知道如何 运行 您的程序。