在 Linux 中安装的 make 命令为其指定一个目录

在 Linux 中安装的 make 命令为其指定一个目录

我想安装 bedtools(即用于处理某些类型文件的 C++ 源代码)。为了安装它,安装说明说要下载 tar 文件,解压文件,转到解压文件的目录,然后键入 make。

安装说明如下:

curl http://bedtools.googlecode.com/files/BEDTools.<version>.tar.gz > BEDTools.tar.gz
tar -zxvf BEDTools.tar.gz
cd BEDTools
make clean
make all
sudo cp bin/* /usr/local/bin/

但是我如何给它一个前缀以便我可以将它安装在特定的目录中?

我知道我可以通过谷歌搜索并尝试找到答案,但由于我正在安装软件,所以我更愿意询问并确保我正确运行它,而不必担心不知道我把它安装在哪里等等。

我尝试了 make --prefix,但是 prefix 不是一个选项。我习惯使用 configure、make、make install,但是这个软件说只能用 make 来安装。

谢谢!

答案1

安装过程的最后一部分是将二进制文件复制到 shell 的搜索路径中的位置。您可以通过键入来查找搜索路径echo $PATH。对我来说,它是:

$ echo $PATH
/opt/local/bin:/opt/local/sbin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/texbin:/usr/X11/bin

这意味着,当我在 shell 中输入一个程序名时,它将首先查找/opt/local/bin是否可以在那里找到该命令,然后在其中查找/opt/local/sbin,等等。如果我想让它在我的主文件夹中查找,我会发出以下命令:

PATH=$PATH:~/bin # search my personal bin folder last

或者

PATH=~/bin:$PATH # search my personal bin folder first

一旦我退出 shell,此更改就会消失。要解决此问题,我需要将命令添加到登录时执行的脚本中(这可能取决于操作系统)。对于我(在 Mac OS X 上),它是.profile我的主文件夹中的(隐藏)文件,我在其中添加了以下行:

export PATH=/opt/local/bin:/opt/local/sbin:$PATH:~/bin

$PATH保留已设置的重要搜索路径非常重要。如果您不小心删除了该部分,则必须为命令提供绝对路径:例如/bin/ls,,/usr/bin/vim...

which <cmd>您可以通过在 shell 中输入来了解正在执行哪个命令。

答案2

线路

sudo cp bin/* /usr/local/bin

正在将编译后的二进制文件安装到。如果您想将它们安装在其他地方,只需更改此语句中的目标文件夹即可/usr/local/bin。例如,如果您想将它们放在主目录中的文件夹中,则bin

cp bin/* ~/bin

sudo(如果您安装到已经具有写访问权限的地方,则可以省略该部分。)

答案3

这取决于具体项目。

--prefix对于许多 GNU 程序,您可以通过传递时间来改变目标configure

并且有几个Makefile-s 是这么写的,

  make install DESTDIR='/tmp/somedestdir'

(但如果二进制文件中有一些硬编码的路径,这可能不起作用)

相关内容