2012-06-12 60 views
1

首先介绍一些背景知识。我最近安装了一些软件(实际上是TeX Live),并且安装程序将二进制文件放在非标准位置(/ usr/local/texlive/2011/bin/x86_64-linux)。没问题,因为我可以改变$ PATH来包含这个目录。但是,我在Makefiles里面使用乳胶,并且说它找不到'乳胶'。我终于意识到Make要求内核以独立于shell的方式运行latex。因此,我将所有的latex可执行文件移动到/ usr/local/bin,并且一切正常,大概是因为内核现在可以看到可执行文件了。Linux内核在哪里查找可执行文件

如果这是正确的,我的问题是:当内核独立于shell而被要求运行程序时,内核在哪里查找可执行文件?

回答

3

内核不寻找可执行文件 - 它总是被告知(绝对或相对)路径。所有程序执行(我相信)基本上归结为调用execve()函数,它需要被告知可执行文件的路径。

当你使用他们的名字来调用程序时,无论是解释你的命令(shell,make)来定位程序。或者,可以使用库函数,如execlp(),它们本身执行路径解析(请参阅“特殊语义”)。

+0

非常感谢,该信息是一种解脱。 – Viktiglemma

相关问题