ZLM 自动编译脚本

最近在给zlm 写宝塔的插件,因此写了这个自动编译的shell 脚本。脚本中使用了镜像的zlm 代码(每日更新),将自动编译 cmake,openssl,libsrtp
脚本分为两个部分,一个为环境变量配置(PYTHON自动生成)
一个为编译部分
可以自行修改,快速一键编译支持 webrtc 的zlm

1.环境变量脚本 build_env_format.sh



cpuCore=$(getconf _NPROCESSORS_ONLN)

# 不要修改下面的部分
# 编译时会自动替换成相应的环境变量

# 控制 编译的依赖环境
cmake_build="ON"
openssl_build="ON"
libsrtp_build="ON"
webrtc_build="ON"

# 版本信息
ffmpeg_version="6.1"
cmake_version="3.27.0"
openssl_version="1.1.1w"
libsrtp_version="2.5.0"
gcc_version="4.8.5"

2.编译脚本 build_zlm.sh


# 仅开发时使用 正式环境中注释
#rm -rf /tmp/*

build_env_file=/www/server/panel/plugin/zlm/build_env_format.sh
. $build_env_file

echo "====================ZLM 编译任务信息===================="
echo "当前CPU核心数:${cpuCore}"
echo "GCC       版本: ${gcc_version}"
echo "CMAKE     版本: ${cmake_version}"
echo "OPENSSL   版本: ${openssl_version}"
echo "FFMPEG    版本: ${ffmpeg_version}"
echo "LIBSRTP   版本: ${libsrtp_version}"
echo "编译 CMAKE[3.27.0]   : ${cmake_build}"
echo "编译 OPENSSL[1.1.1w] : ${openssl_build}"
echo "编译 LIBSRTP[2.5.0]  : ${libsrtp_build}"
echo "开启 [WEBRTC]        : ${webrtc_build}"
echo "====================ZLM 编译任务信息===================="



cd /tmp
# 从镜像站点下载最新的zlm 主文件
wget "https://cdn.iw3c.com.cn/bt-plugin/zlm_download.php?file=master" -O zlm_master.zip
unzip zlm_master.zip && rm -rf zlm_master.zip
mv ZLMediaKit-master zlm_master
# 从镜像站点下载 submodule 文件
wget "https://cdn.iw3c.com.cn/bt-plugin/zlm_download.php?file=submodule" -O zlm_submodule.tar.gz
tar -zxvf zlm_submodule.tar.gz && rm -rf zlm_submodule.tar.gz
mv  3rdpart/* zlm_master/3rdpart/ && rm -rf 3rdpart
mv  www/* zlm_master/www/ && rm -rf www

# 编译 zlm 需要 cmake 3.1.3 以上版本 
# 源代码编译 cmake 3.27.0
if [ "${cmake_build}" == "ON" ]; then
    cd /tmp && wget "https://mirrors.jshainei.com/smb/autoInstall/ai_video/cmake-3.27.0.tar.gz"
    tar -zxvf cmake-3.27.0.tar.gz && rm -rf cmake-3.27.0.tar.gz
    cd /tmp/cmake-3.27.0
    ./configure --prefix=/usr/local/cmake
    make -j${cpuCore} && make install 
    ln -s /usr/local/cmake/bin/cmake /usr/bin/cmake
    rm -rf /tmp/cmake-3.27.0

fi 

# 编译 openssl  1.1.1w 
if [ "${openssl_build}" == "ON" ]; then
    cd /tmp && wget "https://mirrors.jshainei.com/smb/codesrc/tar/openssl-1.1.1w.tar.gz"
    tar -zxvf openssl-1.1.1w.tar.gz && rm -rf openssl-1.1.1w.tar.gz
    cd /tmp/openssl-1.1.1w
    ./config --prefix=/usr/local/openssl no-zlib 
    make -j${cpuCore} && make install 
    mv /usr/bin/openssl /usr/bin/openssl.bak
    mv /usr/include/openssl /usr/include/openssl.bak
    mv /usr/lib64/openssl /usr/lib64/openssl.bak
    rm -rf /usr/lib64/libssl.so.10
    rm -rf /usr/lib64/libcrypto.so.10
    ln -sf /usr/local/openssl/bin/openssl /usr/bin/openssl
    ln -sf /usr/local/openssl/include/openssl /usr/include/openssl
    ln -sf /usr/local/openssl/lib/libssl.so.1.1 /usr/lib64/libssl.so
    ln -sf /usr/local/openssl/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1
    ln -sf /usr/local/openssl/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so
    ln -sf /usr/local/openssl/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1
    echo "/usr/local/openssl/lib" >> /etc/ld.so.conf
    ldconfig -v 
    rm -rf /tmp/openssl-1.1.1w
fi 

# 编译 libsrtp 
if [ "${libsrtp_build}" == "ON" ]; then
    cd /tmp && wget "https://mirrors.jshainei.com/smb/codesrc/tar/libsrtp-2.5.0.zip"
    unzip libsrtp-2.5.0.zip && rm -rf libsrtp-2.5.0.zip
    cd /tmp/libsrtp-2.5.0
    ./configure --enable-openssl --with-openssl-dir=/usr/local/openssl
    make -j${cpuCore} && make install
    rm -rf /tmp/libsrtp-2.5.0
fi 

# 开始正式编译 ZLM
mkdir /tmp/zlm_master/build
cd /tmp/zlm_master/build
if [  "${webrtc_build}" == "ON" ]; then
    cmake_webrtc="-DENABLE_WEBRTC=true  -DOPENSSL_ROOT_DIR=/usr/local/openssl  -DOPENSSL_LIBRARIES=/usr/local/openssl/lib"
else
    cmake_webrtc=""
fi
cmake .. -DCMAKE_BUILD_TYPE=Release ${cmake_webrtc}
make -j${cpuCore}
mkdir /www/server/zlm
rm -rf /www/server/zlm/*
rm -rf /tmp/zlm_master/release/linux/Release/config.ini
mv /tmp/zlm_master/release/linux/Release/* /www/server/zlm/*
rm -rf /tmp/zlm_master/

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注