Msys2构建Autotools工程

更新时间:
2024-02-01
下载文档

Msys2构建Autotools工程

以zlib为例,讲解如何使用msys2编译Autotools工程。示例的目标平台Zynq7000。

准备工作

  • 安装RealEvo-IDE
  • 安装MSYS2
  • 下载zlib开源工程

通过 https://www.zlib.net 下载 zlib 工程,并解压得到 zlib-1.2.13 文件夹

查看zlib源码

打开msys2终端,进入zlib源码路径(注意路径,可通过 ls 查看是否切换到最后一层目录)。在MSYS2终端输入 ./configure --help ,查看zlib编译相关配置。

$ ./configure --help
usage:
  configure [--const] [--zprefix] [--prefix=PREFIX]  [--eprefix=EXPREFIX]
    [--static] [--64] [--libdir=LIBDIR] [--sharedlibdir=LIBDIR]
    [--includedir=INCLUDEDIR] [--archs="-arch i386 -arch x86_64"]

zlib源码中configure的介绍很简单,具体含义需要去分析代码,这里不多做介绍。

设置环境变量

接下来,我们需要设置编译工具链与编译参数等变量。可以通过 设置环境变量configure命令行带入 两种方式。

两种方式各有优缺点,使用环境变量设置后,执行编译构建命令时,无需输入过长的命令。但需要注意,在编译其他平台软件时,需要重新打开Shell终端或清理掉当前的环境变量缓存;使用命令行带入的方式,无需考虑清理环境变量或重启终端,但每次编译都需要输入较长的命令行。

使用以下两种方式之一,完成zlib的配置。

  • 方式一:设置环境变量

可以创建Shell脚本,方便管理与维护命令行,封装成Shell脚本的方法如下所示。

  1. 进入zlib 文件夹所在目录,创建 config.sh 脚本文件,并在文件中填入如下内容。

注意:
将所有的路径修改为自己的base工程所在的路径。

export CC=arm-sylixos-eabi-gcc
export AR=arm-sylixos-eabi-ar
export LD=arm-sylixos-eabi-ld
export RANLIB=arm-sylixos-eabi-ranlib
export CFLAGS="-mcpu=cortex-a9 -mfloat-abi=softfp -mfpu=auto -mno-unaligned-access -fno-strict-aliasing \
-O2 -g1 -gdwarf-2 -Wall -fmessage-length=0 -fsigned-char -fno-short-enums -fPIC -Wl,-shared -DSYLIXOS -I. \
-ID:/SylixOS_WS/test_driver/Base_ARM_A9_R_253/libsylixos/SylixOS \
-ID:/SylixOS_WS/test_driver/Base_ARM_A9_R_253/libsylixos/SylixOS/include \
-ID:/SylixOS_WS/test_driver/Base_ARM_A9_R_253/libsylixos/SylixOS/include/network \
-ID:/SylixOS_WS/test_driver/Base_ARM_A9_R_253/libcextern/libcextern/include"
export LDFLAGS="-mcpu=cortex-a9 -mfloat-abi=softfp -mfpu=auto -nostdlib -Wl,-shared -fPIC -shared \
-LD:/SylixOS_WS/test_driver/Base_ARM_A9_R_253/libsylixos/Release \
-LD:/SylixOS_WS/test_driver/Base_ARM_A9_R_253/libsylixos/Debug \
-LD:/SylixOS_WS/test_driver/Base_ARM_A9_R_253/libcextern/Release \
-LD:/SylixOS_WS/test_driver/Base_ARM_A9_R_253/libcextern/Debug \
-LD:/SylixOS_WS/test_driver/Base_ARM_A9_R_253/libcextern/Release -lcextern -lvpmpdm -lm -lgcc"
./configure --prefix=$PWD/_install --const --zprefix
  1. 在MSYS2终端,输入 bash config.sh 命令执行脚本,完成zlib 配置。

注意:
输入命令的路径,确保是 config.sh 文件所在路径。

  • 方式二: configure命令行带入方式

确保MSYS2终端处于 zlib 目录下,可以直接复制使用以下命令,完成zlib配置。

注意:
将所有的路径修改为自己的base工程所在的路径。

CC=arm-sylixos-eabi-gcc AR=arm-sylixos-eabi-ar LD=arm-sylixos-eabi-ld RANLIB=arm-sylixos-eabi-ranlib \
CFLAGS="-mcpu=cortex-a9 -mfloat-abi=softfp -mfpu=auto -mno-unaligned-access -fno-strict-aliasing \
-O2 -g1 -gdwarf-2 -Wall -fmessage-length=0 -fsigned-char -fno-short-enums -fPIC -Wl,-shared -DSYLIXOS -I. \
-ID:/SylixOS_WS/test_driver/Base_ARM_A9_R_253/libsylixos/SylixOS \
-ID:/SylixOS_WS/test_driver/Base_ARM_A9_R_253/libsylixos/SylixOS/include \
-ID:/SylixOS_WS/test_driver/Base_ARM_A9_R_253/libsylixos/SylixOS/include/network \
-ID:/SylixOS_WS/test_driver/Base_ARM_A9_R_253/libcextern/libcextern/include" \
LDFLAGS="-mcpu=cortex-a9 -mfloat-abi=softfp -mfpu=auto -nostdlib -Wl,-shared -fPIC -shared \
-LD:/SylixOS_WS/test_driver/Base_ARM_A9_R_253/libsylixos/Release \
-LD:/SylixOS_WS/test_driver/Base_ARM_A9_R_253/libsylixos/Debug \
-LD:/SylixOS_WS/test_driver/Base_ARM_A9_R_253/libcextern/Release \
-LD:/SylixOS_WS/test_driver/Base_ARM_A9_R_253/libcextern/Debug \
-LD:/SylixOS_WS/test_driver/Base_ARM_A9_R_253/libcextern/Release -lcextern -lvpmpdm -lm -lgcc" \
./configure --prefix=$PWD/_install --const --zprefix

编译zlib

  1. 按顺序执行以下命令。

注意:
执行命令的路径一定在zlib 目录下,并且make 执行的时间会有点长,只要不报错就没有问题。

make
make install
  1. 安装成功后,在_install目录下看到include、lib文件夹,include文件夹存放了头文件,lib目录下存放了libz的库,至此zlib工程编译完成。
文档内容是否对您有所帮助?
有帮助
没帮助