V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
pppguest3962
V2EX  ›  程序员

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

  •  
  •   pppguest3962 · 2022-03-23 20:12:29 +08:00 · 1741 次点击
    这是一个创建于 976 天前的主题,其中的信息可能已经有所发展或是发生改变。

    想做个 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

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

    8 条回复    2022-03-25 12:08:10 +08:00
    bootvue
        1
    bootvue  
       2022-03-23 20:20:33 +08:00   ❤️ 1
    写绝对路径
    1KN6sAqR0a57no6s
        2
    1KN6sAqR0a57no6s  
       2022-03-23 20:22:11 +08:00   ❤️ 1
    cd /tmp/mysql-5.1.73/
    /usr/bin/make
    /usr/bin/make install
    jaredyam
        3
    jaredyam  
       2022-03-23 20:24:34 +08:00   ❤️ 1
    [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
        4
    adoal  
       2022-03-23 21:47:44 +08:00 via iPhone
    如#2 所说。但是 /usr/bin 是标准路径,正常情况下不会需要指定的。而且从出错信息来看寻找 make 的位置居然是在源码目录下,这太不正常了,感觉像是 PATH 被破坏了。还有它居然是在 sh 文件的 line 1 ?处处透露着诡异。
    不如把你写的 sh 内容原样贴上来大家帮你看下。这样盲猜不太好猜。
    ysc3839
        5
    ysc3839  
       2022-03-23 21:58:11 +08:00 via Android
    怀疑是 X-Y Problem https://coolshell.cn/articles/10804.html
    为什么需要使用源代码编译 MySQL ?预编译的不能用吗?
    AllenHua
        6
    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
        7
    echoechoin  
       2022-03-24 18:36:51 +08:00
    make -C /src
    julyclyde
        8
    julyclyde  
       2022-03-25 12:08:10 +08:00
    你执行的不是 make
    你执行的是./make
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1103 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 18:57 · PVG 02:57 · LAX 10:57 · JFK 13:57
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.