makefile可执行权限被拒绝

时间:2015-02-08 20:33:44

标签: build permissions makefile

我有一个makefile,它创建一个可执行的(“ls”)并将其放在一个名为bin的文件夹中。但是,当我尝试之后运行该可执行文件时,我收到错误: “-bash:bin / ls:Permission denied”

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

1 个答案:

答案 0 :(得分:3)

问题确切地说出了什么问题:新创建的ls可执行文件缺少可执行位。

在你的情况下,你明确禁用链接器,这几乎不是一个好方法,除非你真的真的知道你在做什么。我的盲目猜测是你的源代码缺少一个int main(int, char**)函数,因此链接会给你一个错误(因为你不能用标准的链接器设置构建一个没有一个{{1}的可执行文件}})。但是,对于main中的-c,您既不会收到警告也不会收到可执行文件。

编辑:CFLAGS会显示类似

的内容
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之前执行的启动代码{{1功能。没有它,操作系统将不知道如何运行您的程序。