交叉编译 configure

。。

$ tar zxf readline-5.2.tar.gz
$ cd readline-5.2/
$ ./configure --host=arm-linux --prefix=$(pwd)/_install
$ make
$ make install

中 ./configure --host=arm-linux --prefix=$(pwd)/_install的含义

$ ./configure 下面两个都是运行configure时给的参数

--host=arm-linux 运行环境 (交叉编译成arm)

--prefix=$(pwd)/_install 安装目录   指定安装目录  如果不指定是安装的在默认的目录下,/usr/local

pwd是当前用户目录。

。。

Linux的交叉编译 及configure配置 - Hello~again - 博客园

 

在交叉编译时运行 ./configure 的主要目的是针对目标平台(而非当前宿主机)配置软件构建环境。以下是详细解释和关键步骤:


核心作用

  1. 检测目标平台特性

    • 确定目标架构的 CPU 指令集、字节序(大端/小端)、内存对齐方式等。
    • 检查目标系统支持的库(如 glibc 版本)和头文件是否存在。
  2. 生成适配目标平台的 Makefile

    • 根据目标平台调整编译器选项(如 -march-mtune)。
    • 启用或禁用特定功能模块(例如:是否需要支持 GPU 加速)。
  3. 指定交叉编译工具链

    • 设置交叉编译器(如 arm-linux-gnueabihf-gcc)、链接器等路径。
    • 覆盖默认的编译工具和标志(如 CFLAGSLDFLAGS)。

关键参数与用法

在交叉编译时,必须明确以下参数:

参数作用示例
--host 指定目标平台三元组 --host=arm-linux-gnueabihf
--build 指定宿主机平台(通常自动检测) --build=x86_64-linux-gnu
--target 仅对编译工具链时有效(如 GCC) 一般交叉编译时不需设置
CC 指定 C 编译器 CC=arm-linux-gnueabihf-gcc
CXX 指定 C++ 编译器 CXX=arm-linux-gnueabihf-g++
PKG_CONFIG_PATH 指定目标平台的 pkg-config 路径 PKG_CONFIG_PATH=/目标路径/lib/pkgconfig

完整命令示例:

./configure \
  --host=arm-linux-gnueabihf \
  CC=arm-linux-gnueabihf-gcc \
  CXX=arm-linux-gnueabihf-g++ \
  PKG_CONFIG_PATH=/cross-rootfs/usr/lib/pkgconfig
 

 

主流处理器架构分类表

架构位数指令集类型典型应用场景代表厂商/设备工具链示例(GCC)
x86 32 位 CISC 旧款 PC、低功耗嵌入式设备 Intel Pentium, AMD Athlon i686-linux-gnu
x86_64 64 位 CISC 现代 PC、服务器、云计算 Intel Core, AMD Ryzen x86_64-linux-gnu
ARMv7 32 位 RISC 移动设备、嵌入式系统 树莓派 3, Cortex-A系列 arm-linux-gnueabihf
ARMv8/AArch64 64 位 RISC 高端手机、服务器、单板计算机 树莓派 4, AWS Graviton aarch64-linux-gnu
MIPS 32/64 位 RISC 路由器、网络设备、早期嵌入式 华硕路由器, 索尼 PlayStation 1 mips-linux-gnu
PowerPC 32/64 位 RISC 工业控制、高性能计算 IBM POWER系列, PlayStation 3 powerpc-linux-gnu
RISC-V 可变 RISC 开源硬件、IoT、学术研究 SiFive开发板, 阿里平头哥芯片 riscv64-linux-gnu
SPARC 64 位 RISC 企业级服务器(逐渐被替代) Oracle SPARC T系列 sparc64-linux-gnu
Xtensa 32 位 可定制 物联网设备、低功耗场景 ESP32/ESP8266 Wi-Fi模块 xtensa-esp32-elf
LoongArch 64 位 自主指令集 中国自主研发的桌面/服务器 CPU 龙芯 3A5000 loongarch64-linux-gnu

关键架构详解

1. x86/x86_64

  • 特点:CISC 指令集,高度兼容,主导 PC 和服务器市场。
  • 工具链:x86_64-linux-gnu(64位)或 i686-linux-gnu(32位)。
  • 场景:Windows/Linux 桌面应用、数据中心。

2. ARM

  • 变体:
    • ARMv7(32位):硬浮点(-gnueabihf)用于性能敏感设备(如树莓派 3)。
    • ARMv8(64位):默认集成 SIMD/浮点指令,适用于现代移动设备和云服务器。
  • 工具链:通过 -march 指定具体核心(如 cortex-a53)。

3. RISC-V

  • 优势:开源指令集,模块化设计(可扩展指令),IoT 和定制芯片首选。
  • 生态:Linux 已支持,工具链需从源码构建或使用预编译版本(如 riscv-gnu-toolchain)。

4. MIPS

  • 现状:曾广泛用于路由器和嵌入式设备,逐渐被 ARM 和 RISC-V 替代。
  • 工具链:需注意大端(mips-linux-gnu)或小端(mipsel-linux-gnu)配置。

5. PowerPC

  • 应用:IBM 服务器、航空航天(抗辐射设计),部分工业控制器仍在使用。
  • 工具链:powerpc-linux-gnu(32位)或 powerpc64-linux-gnu(64位)。

如何选择架构?

  1. 性能需求:x86_64/ARMv8 适合高性能计算,RISC-V/MIPS 用于低功耗场景。
  2. 生态支持:ARM 和 x86 拥有最完善的软件生态,RISC-V 正在快速追赶。
  3. 成本与授权:RISC-V 无授权费,适合定制化需求;ARM 需支付架构授权费。
posted @ 2023-02-12 11:14  墨尔基阿德斯  阅读(103)  评论(0)    收藏  举报