2010-07-13 58 views
75

我想运行'make install',因此我拥有我需要的所有东西,但是我希望它将这些东西安装到它们自己的文件夹中,而不是系统的/ usr/bin等。即使它引用/ usr/bin等工具?进行安装,但不是默认目录?

+2

如果您已经构建了项目并运行了./configure而没有前缀,并且想要将其安装在自定义路径中,请参阅http://stackoverflow.com/a/17679654/313113 – bitek 2014-07-08 09:06:10

回答

118

这取决于包装。如果是由GNU自动(./configure)所产生的Makefile文件通常可以设定目标地址,像这样:

./configure --prefix=/somewhere/else/than/usr/local 

如果没有通过自动工具所产生的Makefile文件,但与软件一起分发,只需在打开它编辑并更改它。安装目标目录可能在某个变量中定义。

+5

不应该'make && make install'遵循configure子句吗? – nass 2015-06-26 16:41:18

+4

当然。我认为OP会知道这一点。 – Thomas 2015-06-28 09:41:09

12

它可能取决于您尝试编译的模块所支持的内容。如果是使用自动工具生成你的makefile,使用:

--prefix=<myinstalldir>

运行./configure的

当一些软件包允许你还覆盖运行时:

make prefix=<myinstalldir> 

但是,如果你不使用./configure,唯一确切的方法是打开makefile并检查。它应该是顶部的前几个变量之一。

+2

你还应该知道,'make prefix = ...'可能会导致硬编码路径错误的二进制文件,因为在'./configure --prefix = ...' – 2013-11-20 10:28:16

22

既然不知道你可以使用哪个版本的automake DESTDIR环境变量。
请参阅Makefile以确保。

例如:

export DESTDIR="$HOME/Software/LocalInstall" && make -j4 install 
+5

之后通常不会修改这些文件。您运行configure时没有--prefix命令行参数,并且您已经构建了该项目,但不希望将其安装在默认位置,而是指定一个自定义安装路径。这会将默认的usr/local/bin /路径附加到DESTDIR,并且您的项目将被安装到$ HOME/Software/LocalInstall/usr/local/bin/ – bitek 2014-07-08 09:10:59

-5

尝试使用INSTALL_ROOT。

make install INSTALL_ROOT=$INSTALL_DIRECTORY 
+6

。不要建议人们在没有任何确凿信息的情况下“尝试”某些内容。 – RichieHH 2016-10-31 00:15:59

6
make DESTDIR=./new/customized/path install 

这种快速命令为我工作Ubuntu的16 DESTDIR路径上OpenCV的版本3.2.0安装可以是相对和绝对。

只要DESTDIR位置对用户具有正确的访问权限,此类重定向也可以用于用户不具有管理权限的情况。例如/ home //