GLIBC版本
系统 GLIBC版本
Ubuntu 18.04 2.27 Bionic (较老)
Kylin V10 2.28 Halberd (SP3)
Ubuntu 22.04 2.35 Jammy (较新)
x86环境
apt-get install -y libjsoncpp-dev libcurl4-openssl-dev unixodbc-dev zlib1g zlib1-dev uuid-dev
# autotools依赖
apt install -y autoconf automake libtool pkg-config gettext texinfo autoconf-archive
安装交叉编译环境
apt install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu
编译openssl
./Configure linux-aarch64 \
    --prefix=/opt/aarch64-linux-gnu/sysroot/usr \ 
    --openssldir=/opt/aarch64-linux-gnu/sysroot/etc/ssl \
    shared \
    CC=aarch64-linux-gnu-gcc \
    CXX=aarch64-linux-gnu-g++ \
    CFLAGS="-fPIC -O2" \
    LDFLAGS="-L/opt/aarch64-linux-gnu/sysroot/usr/lib" \
    CPPFLAGS="-I/opt/aarch64-linux-gnu/sysroot/usr/include"

./Configure linux-aarch64 \
  --cross-compile-prefix=aarch64-linux-gnu- \
  --prefix=/opt/aarch64-linux-gnu/sysroot/usr \
  --openssldir=/opt/aarch64-linux-gnu/sysroot/etc/ssl \
  shared \
  no-tests \
  -O3

./config --prefix=/opt/aarch64-linux-gnu/sysroot/usr/ --cross-compile-prefix=aarch64-linux-gnu- --openssldir=/opt/aarch64-linux-gnu/sysroot/etc/ssl no-shared

make
make install_sw   #install_sw 只安装库/头文件,不安装文档,更快也更干净
编译libevent
./configure \
  --host=aarch64-linux-gnu \
  --prefix=/opt/aarch64-linux-gnu/sysroot/usr \
  CC=aarch64-linux-gnu-gcc \
  CXX=aarch64-linux-gnu-g++ \
  AR=aarch64-linux-gnu-ar \
  RANLIB=aarch64-linux-gnu-ranlib \
  --disable-samples \
  --disable-openssl \
  CPPFLAGS="-I/opt/aarch64-linux-gnu/sysroot/usr/include" \
  LDFLAGS="-L/opt/aarch64-linux-gnu/sysroot/usr/lib"
下载/编译odbc
#下载
wget https://www.unixodbc.org/unixODBC-2.3.14.tar.gz
tar xzf unixODBC-2.3.12.tar.gz && cd unixODBC-2.3.12
./configure \
  --host=aarch64-linux-gnu \
  --prefix=/opt/aarch64-linux-gnu/sysroot/usr \
  --disable-gui \
  --disable-drivers \
  CC=aarch64-linux-gnu-gcc \
  CXX=aarch64-linux-gnu-g++ \
  AR=aarch64-linux-gnu-ar \
  RANLIB=aarch64-linux-gnu-ranlib \
  CPPFLAGS="-I/opt/aarch64-linux-gnu/sysroot/usr/include" \
  LDFLAGS="-L/opt/aarch64-linux-gnu/sysroot/usr/lib"

make -j$(nproc)
make install
下载/编译uuid
wget http://ports.ubuntu.com/pool/main/u/util-linux/util-linux_2.27.1.orig.tar.xz
tar xJf util-linux_2.27.1.orig.tar.xz && cd util-linux-2.27.1
# configure(只编 libuuid)
./configure \
  --host=aarch64-linux-gnu \
  --prefix=/opt/aarch64-linux-gnu/sysroot/usr \
  --disable-all-programs \
  --enable-libuuid \
  CC=aarch64-linux-gnu-gcc \
  CXX=aarch64-linux-gnu-g++ \
  AR=aarch64-linux-gnu-ar \
  RANLIB=aarch64-linux-gnu-ranlib
编译jsoncpp
ln -s /usr/bin/make /usr/bin/gmake

cmake .. \
  -DCMAKE_C_COMPILER=aarch64-linux-gnu-gcc \
  -DCMAKE_CXX_COMPILER=aarch64-linux-gnu-g++ \
  -DCMAKE_BUILD_TYPE=Release \
  -DBUILD_SHARED_LIBS=ON \
  -DBUILD_STATIC_LIBS=ON \
  -DJSONCPP_WITH_TESTS=OFF \
  -DCMAKE_INSTALL_PREFIX=/opt/aarch64-linux-gnu/sysroot/usr \
  -DCMAKE_SYSROOT=/opt/aarch64-linux-gnu/sysroot
编译curl
#生成configure文件
autoreconf -ivf


export CC=aarch64-linux-gnu-gcc
export CXX=aarch64-linux-gnu-g++
export AR=aarch64-linux-gnu-ar
export RANLIB=aarch64-linux-gnu-ranlib
export PKG_CONFIG_PATH=/opt/aarch64-linux-gnu/sysroot/usr/lib64/pkgconfig
export LDFLAGS="-L/opt/aarch64-linux-gnu/sysroot/usr/lib64 -Wl,-rpath-link,/opt/aarch64-linux-gnu/sysroot/usr/lib64 -ldl -lpthread"
export CPPFLAGS="-I/opt/aarch64-linux-gnu/sysroot/usr/include"

./configure \
  --host=aarch64-linux-gnu \
  --prefix=/opt/aarch64-linux-gnu/sysroot/usr \
  --with-openssl=/opt/aarch64-linux-gnu/sysroot/usr \
  --disable-ldap \
  --disable-rtsp \
  --disable-proxy \
  --disable-doh \
  --disable-http-auth \
  --disable-manual \
  --disable-libcurl-option \
  --enable-http \
  --enable-https \
  --enable-ipv6 \
  --enable-threaded-resolver
编译mutool
# 第 1 步:确保 generated/ 先用宿主 gcc 跑过(没跑过的必做)
make generate

# 第 2 步:走 tools 伪目标,别直接喊 mutool
make OS=aarch64-cross build=release tools
通用编译(uodbc等)
./configure   --host=aarch64-linux-gnu   --prefix=/opt/aarch64-linux-gnu/sysroot/usr   CC=aarch64-linux-gnu-gcc   CXX=aarch64-linux-gnu-g++   AR=aarch64-linux-gnu-ar   RANLIB=aarch64-linux-gnu-ranlib  CPPFLAGS="-I/opt/aarch64-linux-gnu/sysroot/usr/include"   LDFLAGS="-L/opt/aarch64-linux-gnu/sysroot/usr/lib -Wl,-rpath-link,/opt/aarch64-linux-gnu/sysroot/usr/lib"
文档更新时间: 2026-07-19 17:04   作者:方杰