在 Linux 的 shell 脚本里,如何调用 make && make install?

2022-03-23 20:12:29 +08:00
 pppguest3962

想做个 sh 脚本完成软件的准备工作
其中有一步是对软件代码编译安装
如:/tmp/mysql-5.1.71/configure --xxx 已经完成后
要在 /tmp/mysql-5.1.71/的路径下执行 make && make install 在 sh 脚本里:
./testsh.sh: line 1: /tmp/mysql-5.1.73/make: No such file or directory

请问正确姿势应该是怎么样?

1765 次点击
所在节点    程序员
8 条回复
bootvue
2022-03-23 20:20:33 +08:00
写绝对路径
1KN6sAqR0a57no6s
2022-03-23 20:22:11 +08:00
cd /tmp/mysql-5.1.73/
/usr/bin/make
/usr/bin/make install
jaredyam
2022-03-23 20:24:34 +08:00
[makefile - How to run make file from any directory? - Super User]( https://superuser.com/questions/370575/how-to-run-make-file-from-any-directory)
adoal
2022-03-23 21:47:44 +08:00
如#2 所说。但是 /usr/bin 是标准路径,正常情况下不会需要指定的。而且从出错信息来看寻找 make 的位置居然是在源码目录下,这太不正常了,感觉像是 PATH 被破坏了。还有它居然是在 sh 文件的 line 1 ?处处透露着诡异。
不如把你写的 sh 内容原样贴上来大家帮你看下。这样盲猜不太好猜。
ysc3839
2022-03-23 21:58:11 +08:00
怀疑是 X-Y Problem https://coolshell.cn/articles/10804.html
为什么需要使用源代码编译 MySQL ?预编译的不能用吗?
AllenHua
2022-03-24 08:48:09 +08:00
需要调用 make 的命令位置应该是在 /bin/make 才对吧……

你得把 shell script 贴出来让大家看看才能更好 debug

分享一个 CentOS7 下的一个编译安装 libsodium 加密库的 shell 脚本

```
#!/bin/bash
# install dependencies
yum update -y
yum install -y pcre pcre-devel git gettext gcc autoconf libtool automake make asciidoc xmlto c-ares-devel libev-devel

export LIBSODIUM_VER=1.0.17
wget https://download.libsodium.org/libsodium/releases/libsodium-$LIBSODIUM_VER.tar.gz
tar xvf libsodium-$LIBSODIUM_VER.tar.gz
pushd libsodium-$LIBSODIUM_VER
./configure --prefix=/usr && make
#./configure && make && make check
make install
popd
ldconfig
```
echoechoin
2022-03-24 18:36:51 +08:00
make -C /src
julyclyde
2022-03-25 12:08:10 +08:00
你执行的不是 make
你执行的是./make

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/842455

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX