当我执行“make install”时,它不会创建目录
Posted
技术标签:
【中文标题】当我执行“make install”时,它不会创建目录【英文标题】:when I do a 'make install' it does not create Directory 【发布时间】:2014-01-15 22:44:20 【问题描述】:这是我第一次尝试使用 autoconf,我更改并添加了一些不同的代码到一个实用程序,然后我将 make.am 和其他我需要的文件,我修改它们以使用我编写的内容到同一个程序中。因为它与那个一起工作,所以我需要更改的只是名称和版本以及 main.c 和头文件名。当我这样做时,配置,然后,制作,一切都很顺利。当我进入“make install”时,我得到了这个错误,我不知道为什么。
Making install in src
make[1]: Entering directory `/home/userx/Dropbox/mhsetroot-MAKE/src'
make[2]: Entering directory `/home/userx/Dropbox/mhsetroot-MAKE/src'
/bin/bash ../config/mkinstalldirs /usr/local/bin
/usr/bin/install -c mhsetroot /usr/local/bin/mhsetroot
/usr/bin/install: cannot create regular file `/usr/local/bin/mhsetroot': Permission denied
make[2]: *** [install-binPROGRAMS] Error 1
make[2]: Leaving directory `/home/userx/Dropbox/mhsetroot-MAKE/src'
make[1]: *** [install-am] Error 2
make[1]: Leaving directory `/home/userx/Dropbox/mhsetroot-MAKE/src'
make: *** [install-recursive] Error 1
它不会让它创建一个目录。所以,我累了。
mkdir /usr/local/bin/mhsetroot
我遇到了同样的错误,因此它只是权限问题,对吧? 如果仅此而已,那么它应该可以在其他人的计算机上运行,而不是我的计算机?另外,那么我需要在 my “local/bin” 上设置什么权限,以便“make install”能够工作而不必先处于“sudo”模式?
【问题讨论】:
【参考方案1】:我得到了同样的错误,所以这只是一个权限问题,对吧?
没错。它无法创建/usr/local/bin/mhsetroot
。
如果仅此而已,那么它应该可以在其他人的计算机上运行,而不是我的计算机?
这取决于/usr/local/bin
的权限是什么。
另外,我需要在“local/bin”上设置什么权限,这样“make install”才能工作,而不必先处于“sudo”模式?
这取决于/usr/local/bin
的权限是什么。通常你将需要root权限才能安装在那里(例如sudo make install
)。或者,您可以将DESTDIR
设置为make install
:
make DESTDIR=/some/writable/path install
但这也可能需要更多设置(例如LD_LIBRARY_PATH
)。
【讨论】:
是的,这就是大脑放屁而已-我忘了-我正在安装而不是 sudo install-问题已解决【参考方案2】:尝试使用
sudo make install
命令,因为您需要为此具有 root 访问权限。
所以不要在命令中输入make install
,只要你
获取权限错误,尝试将sudo
放在命令开头,然后输入root 密码。有用。
:)
【讨论】:
【参考方案3】:make && make install
不是一个命令,它是两个。sudo make && install
将以超级用户身份执行make
,但&&
部分告诉make install
等到第一部分完成。 'make install' 是它自己的命令,所以你需要的是:
sudo make && sudo make install
这是我需要在 slackware 上执行的操作才能构建 efl。我有与 OP 完全相同的错误(搜索它把我带到了这里)。
一个更常见的例子是
sudo apt update && sudo apt upgrade
这些通常写成 2 行,不带“&&”。你必须 sudo 两个部分。
【讨论】:
以上是关于当我执行“make install”时,它不会创建目录的主要内容,如果未能解决你的问题,请参考以下文章
Berkeley DB:“make install”在 Linux 上失败
使用 make install 安装 libssh 构建时出错
redis执行make后就能用了,无需执行make install
当可执行文件派生另一个可执行文件时,不会创建 gmon.out