2012-11-28 112 views
2

我正試圖讓一個C++程序能夠找到迷宮中最短的路線。儘管如此,我努力讓我的makefile能夠正常工作。目前,我的makefile包含以下內容:makefile權限被拒絕

mazeIO : mazeIO.cpp maze.h 
    g++ -g -Wall mazeIO.cpp maze.h -o mazeIO 

mazeIO.cpp和maze.h是我在項目中使用的唯一兩個文件。在我打字的命令行中

make -f Makefile 

它編譯得很好。然後我打字

./mazeIO maze.txt 

maze.txt是我試圖導航的迷宮輸入。 當我輸入此後我得到以下錯誤:

bash: ./mazeIO: Permission denied 

我不明白爲什麼。有什麼建議麼?

+3

'ls -l mazeIO'顯示什麼? –

+1

您不需要在編譯行中列出'maze.h'。它看起來像'g ++'必須忽略它;你很幸運。 –

+0

ls -l mazeIO顯示-rw ------- 1然後我在 – user1795370

回答

2

由於存在執行(x)標誌,可執行文件在Linux中稱爲可執行文件。您的「可執行文件」沒有它 - 它只具有讀取(r)和寫入(w)權限。要麼你從可執行文件剝奪權限(比如使用chmod 600 mazeIO),要麼你的umask很奇怪。 umask控制新文件的默認用戶權限,如果您從默認值修改它,它可能會造成嚴重破壞。對於大多數系統,默認的umask是0022,我建議將它留在那裏,除非你知道會發生什麼。我沒有任何其他想法,爲什麼你可能會錯過執行位。

+2

如果您提供了更改umask設置的方法,這會更有幫助。 – arman

0

這很簡單。它需要可執行權限。

使用chmod + X mazeIO

,如果它需要由其他用戶來執行你也可以使用chmod。
如果需要由其他用戶執行,man chmod會爲您提供所需的數值。小心提供完整的可執行文件,讀取和寫入權限(chmod 777)

chmod 600不會使其可執行。