2011-08-11 68 views
4

我遇到了makefile的一個奇怪問題。我只是想設置在生成文件的符號鏈接,但一臺機器上得到一個錯誤消息(Linux的2.6.18-238.12.1.el5)Makefile和符號鏈接

make: execvp: ln: Too many levels of symbolic links 

它適用於我的MacBook完美的罰款。如果我在shell中執行相同的命令,它也可以正常工作。有什麼可能出錯?有沒有對ln重要的環境變量?

+0

你確定你在命令行上做了什麼是你的規則要做的事嗎?你能告訴我們這個規則嗎? – Beta

回答

4

錯誤信息中的execvp是關鍵,我想。我相信這是說有太多級別的符號鏈接,同時試圖找到ln命令本身

例子:

all: 
    ln -nsf /tmp/foo /tmp/foo 
    /tmp/foo/ln x y 

運行 「讓」 與這個Makefile有錯誤了:

make: execvp: /tmp/foo/ln: Too many levels of symbolic links 

那麼,如何在你的Makefile調用ln,到底是什麼?什麼在你的PATH等?

[更新]

我敢打賭,Makefile弄亂了你的PATH。這裏是一個生成文件,它能夠再現你的確切錯誤信息:

PATH=/tmp/foo 

all: 
    /bin/ln -nsf /tmp/foo /tmp/foo 
    ln x y 
+0

我認爲你是對的。當我打電話/ bin/ln它的作品。現在我只需要弄清楚它弄亂了路徑。謝謝! – hanno