Makefile错误:/ bin / sh:1:/ dir权限被拒绝

时间:2014-10-11 21:41:42

标签: permissions makefile sh denied

运行make时出现以下编译错误:

/ bin / sh:1:/ installed / CoinAll / include / coin:权限被拒绝

这是Makefile:

#
P=farmer
#

EXE=$(P)
OBJS=main-farmer.o model-farmer.o param-farmer.o pm.h

ADDLIBS=-D.
ADDINCFLAGS=-I.

SRCDIR=~/coin-projects

########## 


CXX=g++
CXXFLAGS=-O3 -fomit-frame-pointer -pipe -DNDEBUG -pedantic-errors -Wimplicit -Wparentheses -Wreturn-type -Wcast-qual -Wall -Wpointer-arith -Wwrite-strings -Wconversion
CXXLINKFLAGS=-Wl,--rpath -Wl,/installed/CoinAll/lib
CC=gcc
CFLAGS=-03 -fomit-frame-pointer -pipe -DNDEBUG -pedantic-errors -Wimplicit -Wparentheses -Wsequence-point -Wreturn-type -Wcast-qual -Wall


COININCDIR=/installed/CoinAll/include/coin

#  COIN-OR libs
COINLIBDIR=/installed/CoinAll/lib

#  Clp
LIBS=-L$(COINLIBDIR) -lCbc -lCgl -lOsiClp -lOsi -lClp -lCoinUtils -lm \
`cat $(COINLIBDIR)/cgl_addlibs.txt` \
`cat $(COINLIBDIR)/clp_addlibs.txt` \
`cat $(COINLIBDIR)/coinutils_addlibs.txt` 

INCL=-I`$(CYGPATH_W)$(COININCDIR)`$(ADDINCFLAGS)

CYGPATH_W=




CLEANFILES=\
addBits.o addBits \
addColumns.o addColumns \
addRows.o addRows \
decompose.o decompose \
defaults.o defaults \
driver2.o driver2 \
driver.o driver \
driverC.o driverC \
dualCuts.o dualCuts \
ekk.o ekk \
ekk_interface.o ekk_interface \
hello.o hello \
makeDual.o makeDual \
minimum.o minimum \
network.o network \
piece.o piece \
rowColumn.o rowColumn \
sprint2.o sprint2 \
sprint.o sprint \
testBarrier.o testBarrier \
testBasis.o testBasis \
testGub2.o testGub2 \
testGub.o testGub \
testQP.o testQP \
useVolume.o useVolume

# Part 3
#

all: $(EXE)
.SUFFIXES: .cpp .c .o .obj
$(EXE):$(OBJS)
bla=;
for file in $(OBJS); do bla="$$bla `$(CYGPATH_W) $$file`"; done; \
$(CXX) $(CXXLINKFLAGS) $(CXXFLAGS) -o $@ $$bla $(ADDLIBS) $(LIBS)

####
########
############
########
####


clean:
    rm -rf $(CLEANFILES)
.cpp.o:
    $(CXX) $(CXXFLAGS) $(INCL) -c -o $@ `test -f '$<' || echo '$(SRCDIR)/'`$<
.cpp.obj:
    $(CXX) $(CXXFLAGS) $(INCL) -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(SRCDIR)/$<'; fi`
.c.o:
    $(CC) $(CFLAGS) $(INCL) -c -o $@ `test -f '$<' || echo '$(SRCDIR)/'`$<
.c.obj:
    $(CC) $(CFLAGS) $(INCL) -c -o $@ `if test -f '$<'; then $(CYGPATH_W) '$<'; else $(CYGPATH_W) '$(SRCDIR)/$<'; fi`

我已将权限设置为/ installed / CoinAll / include / coin及其所有文件的rwx。

感谢。

2 个答案:

答案 0 :(得分:0)

在我看来好像Makefile正在尝试执行program / installed / CoinAll / include / coin而不是目录。无论你如何chmod一个目录,它仍然无法作为一个程序执行。

以下行: INCL = -I $(CYGPATH_W)$(COININCDIR) $(ADDINCFLAGS)

与这样的行组合: $(CXX)$(CXXFLAGS)$(INCL)-c -o $ @`test -f'$&lt;' || echo'$(SRCDIR)/'`$&lt;

...将评估如下命令:

g ++(很多c ++ - 标志)-I`installed / CoinAll / include / coin` -c -o ...

因为$(CYGPATH_W)和$(ADDINCFLAGS)都是空的。

当shell执行包含反引号“`”的命令时,它将用反引号之间的命令输出替换反引号之间的文本。试试这个: echo`ls /`

答案 1 :(得分:0)

我有这个错误,这是我的反病毒。打开,我得到了同样的错误。关闭,它工作得很好。然后重新打开防病毒软件,出现同样的错误。这是我的反病毒,所以试着暂时关掉它的所有功能。