瑞芯微rv1106交叉编译libcurl

104 阅读3分钟

在这里下载curl下载地址

CPPFLAGS="-I/你的_SDK/tools/linux/toolchain/arm-rockchip830-linux-uclibcgnueabihf/arm-rockchip830-linux-uclibcgnueabihf/sysroot/usr/include/openssl" LDFLAGS="-L/你的_SDK/tools/linux/toolchain/arm-rockchip830-linux-uclibcgnueabihf/arm-rockchip830-linux-uclibcgnueabihf/sysroot/usr/lib" LIBS="-ldl" ./configure --host=arm-linux CC=/你的_SDK/tools/linux/toolchain/arm-rockchip830-linux-uclibcgnueabihf/bin/arm-rockchip830-linux-uclibcgnueabihf-gcc CXX=/你的_SDK/tools/linux/toolchain/arm-rockchip830-linux-uclibcgnueabihf/bin/arm-rockchip830-linux-uclibcgnueabihf-g++ --with-ssl  --enable-shared --enable-static --disable-dict --disable-ftp --disable-imap --disable-ldap --disable-ldaps --disable-pop3 --disable-proxy --disable-smtp --disable-telnet --disable-tftp --disable-zlib --without-ca-bundle --without-gnutls  --without-libidn --without-libssh2 --without-nss  --without-zlib --without-libpsl  --prefix=/你的_SDK/tools/linux/toolchain/arm-rockchip830-linux-uclibcgnueabihf/arm-rockchip830-linux-uclibcgnueabihf/sysroot/usr

这条命令总共分为两部份

环境变量

要引入openssl,所以需要告诉编译器去哪里找openssl的头文件和库文件。

  • CPPFLAGS -I 后接openssl的头文件所在的目录
  • LDFLAGS -L 后接openssl的库文件所在的目录
  • LIBS="-ldl" LIBS 指定链接时需要额外链接的库。-ldl 是链接 动态加载库 (Dynamic Linking Library) 的简写,提供在程序运行时加载共享库(.so 文件)的功能

配置脚本和选项

./configure 是一个配置脚本,它会检查系统环境,并根据给定的选项生成 Makefile

  • --host=arm-linux:

    这是一个 交叉编译 选项。它指定了最终 目标 机器的架构是 arm-linux。这意味着你正在一个不同架构的机器(例如,x86_64)上编译,但生成的可执行文件将在 arm-linux 机器上运行。

  • CC=***-gcc:

    CC 环境变量指定了 C 编译器 的路径。

  • CXX=***-g++:

    CXX 环境变量指定了 C++ 编译器 的路径。

  • --with-ssl:

    这个选项告诉配置脚本启用 SSL/TLS 支持。由于前面已经指定了 OpenSSL 库的路径,所以它会使用 OpenSSL 来提供这个功能。

  • --enable-shared --enable-static:

    这两个选项告诉配置脚本同时构建 共享库 (.so) 和 静态库 (.a)。

  • --disable-…--without-…:

    这些选项用于禁用软件的特定功能或依赖。--disable 通常用于禁用程序自带的功能,而 --without 通常用于禁用对外部库的依赖。在这个命令中,大量选项被用来禁用不必要的协议和功能(如 FTP, IMAP, LDAP, SMTP 等),以及外部库(如 zlib, GnuTLS 等),以减少最终生成的可执行文件的大小和复杂性,这在嵌入式或资源受限的设备上很常见。

  • --prefix=安装目录:

    这个选项指定了编译完成后 安装 程序的 目标路径make install 命令会将所有生成的文件(可执行文件、库、头文件等)复制到这个指定的目录中。你可以像我一样直接安装到工程sdk的sysroot/usr目录下,也可以先输出到其他目录,然后复制lib和include到工程目录中。

补充

根证书 cURL提供