linux 下第三方库编译及交叉编译——MDBTOOLS--arm-64

1 相关依赖

gettext

2 下载、解压

复制代码
wget https://github.com/mdbtools/mdbtools/archive/refs/tags/v1.0.0.tar.gz
tar -xvf v1.0.0.tar.gz

2.2 生成Makefile

2.2.1 解决问题

复制代码
# 设置交叉编译链路径(替换为你的实际路径)
export CROSS_COMPILE_PATH="/home/nanqiu/Desktop/work/huawei_edge_app/buildTouchain/gcc-arm-8.2-2019.01-x86_64-aarch64-linux-gnu/bin"

# 将交叉编译链添加到系统 PATH(确保能找到编译器)
export PATH="$CROSS_COMPILE_PATH:$PATH"

# 指定默认编译器为交叉编译链的 gcc(ARM 架构)
export CC="$CROSS_COMPILE_PATH/aarch64-linux-gnu-gcc"

# 指定默认链接器(可选,部分项目需要)
export LD="$CROSS_COMPILE_PATH/aarch64-linux-gnu-ld"

# 重建 m4 目录
mkdir -p m4

# 复制 gettext 中的所有宏文件到项目 m4 目录(确保宏文件完整)
cp /home/nanqiu/Desktop/lib/gettext/gettext-0.20.1/my_build_x86/share/aclocal/*.m4 ./m4/

nano m4/ac_lib.m4
写入
AC_DEFUN([AC_LIB_PREPARE_PREFIX],
[
  AC_ARG_WITH([libdir],
    AS_HELP_STRING([--with-libdir=DIR], [install library files in DIR [[PREFIX/lib]]]),
    [libdir=$withval], [libdir='${exec_prefix}/lib'])
  AC_SUBST(libdir)
])

AC_DEFUN([AC_LIB_RPATH],
[
  AC_ARG_ENABLE([rpath],
    AS_HELP_STRING([--disable-rpath], [do not hardcode runtime library paths]),
    [enable_rpath=$enableval], [enable_rpath=yes])
  if test "x$enable_rpath" = "xyes"; then
    RPATH_FLAGS="-Wl,-rpath,$libdir"
  else
    RPATH_FLAGS=""
  fi
  AC_SUBST(RPATH_FLAGS)
])

AC_DEFUN([AC_LIB_LINKFLAGS_BODY],
[
  AC_REQUIRE([AC_LIB_PREPARE_PREFIX])
  LDFLAGS="$LDFLAGS -L$libdir $RPATH_FLAGS"
])

AC_DEFUN([AC_LIB_APPENDTOVAR],
[
  eval "$1=\"\$$1 $2\""
])

# 确保 build-aux 目录存在
mkdir -p build-aux

# 从你的 gettext 编译目录复制 config.rpath 文件
cp /home/nanqiu/Desktop/lib/gettext/gettext-0.20.1/my_build_x86/share/gettext/config.rpath ./build-aux/

2.2.2

复制代码
sudo apt update && sudo apt install autoconf-archive
# 清理缓存并重新生成
rm -rf autom4te.cache/
autoreconf -i -f -v -I ./m4

2.2.3

复制代码
./configure \
  --disable-glib \
  --with-unixodbc=/home/nanqiu/Desktop/lib/obdc/unixODBC-2.3.7/arm64 \
  --prefix=$(pwd)/mybuild \
  --host=aarch64-linux-gnu \
  --build=x86_64-pc-linux-gnu \
  LDFLAGS="-L/home/nanqiu/Desktop/lib/obdc/unixODBC-2.3.7/arm64/lib" \
  CPPFLAGS="-I/home/nanqiu/Desktop/lib/obdc/unixODBC-2.3.7/arm64/include"

2.3 编译

复制代码
make LDFLAGS="-L/home/nanqiu/Desktop/lib/obdc/unixODBC-2.3.7/arm64/lib -Wl,-rpath-link=/home/nanqiu/Desktop/lib/obdc/unixODBC-2.3.7/arm64/lib"

2.4 安装

结果在