Note
教程版本: v2.0.8-r1
Warning
必须要使用 build-all-platforms.yml 去选择对应架构去编译
否则会出现不可预测的错误
# 使用软件: CLion
# 参考 CMake 参数
-DVCPKG_TARGET_TRIPLET=x64-mingw-static \
-DCMAKE_TOOLCHAIN_FILE=G:\Vcpkgs\ESurfingClient\scripts\buildsystems\vcpkg.cmake# 示例系统: Debian 13
sudo apt install -y cmake \
make \
ninja-build \
gcc-mingw-w64-x86-64 \
g++-mingw-w64-x86-64 \
mingw-w64-tools \
upx-ucl \
wget \
file \
zip \
perl \
libperl-dev# 根据自身情况判断路径
cd /path/to/esurfingclient/main
cat > toolchain-mingw64.cmake << 'EOF'
set(CMAKE_SYSTEM_NAME Windows)
set(CMAKE_SYSTEM_PROCESSOR x86_64)
set(CMAKE_C_COMPILER x86_64-w64-mingw32-gcc)
set(CMAKE_CXX_COMPILER x86_64-w64-mingw32-g++)
set(CMAKE_RC_COMPILER x86_64-w64-mingw32-windres)
set(CMAKE_FIND_ROOT_PATH /usr/x86_64-w64-mingw32)
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
EOFcd /tmp
wget https://curl.se/download/curl-8.20.0.tar.gz
tar -xzf curl-8.20.0.tar.gz
cd curl-8.20.0
./configure \
--host=x86_64-w64-mingw32 \
--prefix=/usr/x86_64-w64-mingw32 \
--enable-static \
--disable-shared \
--without-ssl \
--enable-http \
--enable-proxy \
--enable-cookies \
--enable-basic-auth \
--enable-digest-auth \
--disable-ftp \
--disable-file \
--disable-ldap \
--disable-ldaps \
--disable-rtsp \
--disable-dict \
--disable-telnet \
--disable-tftp \
--disable-pop3 \
--disable-imap \
--disable-smb \
--disable-smtp \
--disable-gopher \
--disable-mqtt \
--disable-websockets \
--disable-bearer-auth \
--disable-kerberos-auth \
--disable-negotiate-auth \
--disable-ntlm \
--disable-tls-srp \
--disable-aws \
--disable-rtmp \
--without-brotli \
--without-zstd \
--without-libpsl \
--without-libssh2 \
--without-librtmp \
--without-libidn2 \
--without-nghttp2 \
--without-ngtcp2 \
--without-nghttp3 \
--without-quiche \
--without-msh3 \
--without-libgsasl \
--without-libssh \
--without-wolfssh \
--without-hyper \
--without-zlib \
--disable-ares \
--disable-rt \
--disable-threaded-resolver \
--disable-ipv6 \
--disable-manual \
--disable-docs \
--disable-verbose \
--disable-versioned-symbols \
--disable-sspi
make -j$(nproc)
sudo make install# 根据自身情况判断路径
cd /path/to/esurfingclient/main
cmake \
-G Ninja \
-B build \
-S . \
-DCMAKE_TOOLCHAIN_FILE=toolchain-mingw64.cmake \
-DBUILD_SHARED_LIBS=OFF
cmake --build build --target ESurfingClient -j$(nproc)# 示例系统: Debian 13
sudo apt install build-essential \
cmake \
wget \
gcc \
g++ \
make \
upx-ucl \
binutils \
filecd /tmp
wget https://curl.se/download/curl-8.20.0.tar.gz
tar -xzf curl-8.20.0.tar.gz
cd curl-8.20.0
./configure \
--prefix=/usr/local \
--enable-static \
--disable-shared \
--without-ssl \
--enable-http \
--enable-proxy \
--enable-cookies \
--enable-basic-auth \
--enable-digest-auth \
--disable-ftp \
--disable-file \
--disable-ldap \
--disable-ldaps \
--disable-rtsp \
--disable-dict \
--disable-telnet \
--disable-tftp \
--disable-pop3 \
--disable-imap \
--disable-smb \
--disable-smtp \
--disable-gopher \
--disable-mqtt \
--disable-websockets \
--disable-bearer-auth \
--disable-kerberos-auth \
--disable-negotiate-auth \
--disable-ntlm \
--disable-tls-srp \
--disable-aws \
--disable-rtmp \
--without-brotli \
--without-zstd \
--without-libpsl \
--without-libssh2 \
--without-librtmp \
--without-libidn2 \
--without-nghttp2 \
--without-ngtcp2 \
--without-nghttp3 \
--without-quiche \
--without-msh3 \
--without-libgsasl \
--without-libssh \
--without-wolfssh \
--without-hyper \
--without-zlib \
--disable-ares \
--disable-rt \
--disable-threaded-resolver \
--disable-ipv6 \
--disable-unix-sockets \
--disable-manual \
--disable-docs \
--disable-verbose \
--disable-versioned-symbols
make -j$(nproc)
sudo make installexport CMAKE_PREFIX_PATH=/usr/local:$CMAKE_PREFIX_PATH
# 根据自身情况判断路径
cd /path/to/esurfingclient/main
cmake . -B build
cd build
make -j$(nproc)Note
和 Linux 的差不多
而且毕竟我不怎么会用 macOS, 所以就不赘述了
具体可看相应的工作流
# 示例系统: Debian 13
sudo apt install -y build-essential \
clang \
flex \
bison \
g++ \
gawk \
gcc-multilib \
g++-multilib \
gettext \
git \
libncurses5-dev \
libssl-dev \
rsync \
wget \
ca-certificates \
unzip \
file \
zstd \
python3-setuptools \
swig# 使用的镜像站: https://mirrors.sustech.edu.cn/openwrt/releases/
# 示例 SDK 包面向架构: mipsel_24kc
cd /tmp
wget https://mirrors.sustech.edu.cn/openwrt/releases/24.10.8/targets/malta/le/openwrt-sdk-24.10.8-malta-le_gcc-13.3.0_musl.Linux-x86_64.tar.zst
tar -I zstd -xf openwrt-sdk-24.10.8-malta-le_gcc-13.3.0_musl.Linux-x86_64.tar.zstNote
如果需要编译 apk 包则需要下载 OpenWRT 25.12.x 及以上版本的 SDK 包
Warning
做这一步之前, 如果有版本号要求的话
检查 esurfingclient/main 目录下的 CMakeLists.txt 文件
找到 set(PROGRAM_VERSION_MAJOR x), set(PROGRAM_VERSION_MINOR x),set(PROGRAM_VERSION_PATCH x), set(PROGRAM_VERSION_RELEASE x) 三个选项
修改成自己要的版本号, 否则包版本号默认是 1.0.0-1
cp -r esurfingclient openwrt-sdk/package/
cd openwrt-sdk
scripts/feeds update base
scripts/feeds update packages
scripts/feeds install curl
scripts/feeds install esurfingclientmake defconfig
cat ../openwrt-config/all.config >> .config
make defconfig# 编译 libcurl 包
make package/curl/compile -j$(nproc)
# 编译本软件包
make package/esurfingclient/compile -j$(nproc)
# 不想找包的话就用这个来找, 会将包复制到当前目录下
# IPK 包查找
find bin/packages -name "esurfingclient*.ipk" -exec cp {} ./ \;
# APK 包查找
find bin/packages -name "esurfingclient*.apk" -exec cp {} ./ \;