2012-06-12 99 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

相關問題