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 将不知道如何 运行 您的程序。