最近在给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/