Makefile 和符号链接

发布于 2024-11-29 05:53:59 字数 262 浏览 2 评论 0原文

我在 makefile 方面遇到了一个奇怪的问题。我只是想在 makefile 中设置一个符号链接,但在一台机器上收到错误消息 (Linux 2.6.18-238.12.1.el5)

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

它在我的 MacBook 上运行得很好。如果我在 shell 中执行相同的命令,它也可以正常工作。可能会出什么问题?是否有任何对 ln 很重要的环境变量?

I'm experiencing a strange problem with a makefile. I simply want to set a symbolic link in the makefile but get an error message on one machine (Linux 2.6.18-238.12.1.el5)

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

It works perfectly fine on my MacBook. It also works fine if I execute the same command in the shell. What could go wrong? Are there any environment variables important for ln?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

岁吢 2024-12-06 05:53:59

我认为错误消息中的 execvp 是关键。我相信它是说在尝试定位 ln 命令本身时有太多级别的符号链接

示例:

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

使用此 Makefile 运行“make”会出现以下错误:

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

那么,您的 Makefile 到底是如何调用 ln 的呢?你的PATH等中有什么?

[更新]

我敢打赌 Makefile 搞乱了你的 PATH。这是一个重现您的确切错误消息的 Makefile:

PATH=/tmp/foo

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

The execvp in the error message is the key, I think. I believe it is saying there are too many levels of symbolic links while trying to locate the ln command itself.

Example:

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

Running "make" with this Makefile errors out with:

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

So, how is your Makefile invoking ln, exactly? What is in your PATH etc.?

[update]

I bet the Makefile is messing up your PATH. Here is a Makefile that reproduces your exact error message:

PATH=/tmp/foo

all:
    /bin/ln -nsf /tmp/foo /tmp/foo
    ln x y
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文