【问题标题】:Building binutils on ARM64 - make check fails - section ordering在 ARM64 上构建 binutils - make check 失败 - 部分排序
【发布时间】:2019-12-07 20:52:53
【问题描述】:

为 ARM64 编译 binutils-2.33.1 (aarch64*--)。

构建通过了,但我在某些程序中遇到了奇怪的问题。例如,GNU MP 在构建其生成器时会进行核心转储。长的处理似乎坏了。

当我在 binutils-2.33.1 构建上运行 make check 时。只有 3 次意外失败。他们绝对脱颖而出:

Running /custom_toolchain/binutils-2.33.1/binutils/testsuite/binutils-all/aarch64/aarch64.exp ...
FAIL: Check if disassembler can handle all sections in default order                                                                                  
FAIL: Check if disassembler can handle all sections in different order than header

Running /custom_toolchain/binutils-2.33.1/binutils/testsuite/binutils-all/objdump.exp ...
Version /custom_toolchain/build/binutils/objdump 2.33.1
FAIL: build-id-debuglink (grepping for source file name in disassembly output)

我可以放心地忽略这些故障吗?如果不是,有什么原因吗?

【问题讨论】:

    标签: makefile arm64 toolchain binutils


    【解决方案1】:

    您不应忽视这些失败。如果您可以访问 linux x86_64 系统,则可以使用可信任的工具链交叉编译 binutils 2.33.1,例如来自 LinaroArm 的 gcc 工具链:根本原因可能是有缺陷的工具在您的 Aarch64 系统上。

    在 linux x86_64 系统上交叉编译 binutils 的过程是:

    wget https://mirror.csclub.uwaterloo.ca/gnu/binutils/binutils-2.33.1.tar.xz
    wget https://releases.linaro.org/components/toolchain/binaries/7.5-2019.12/aarch64-linux-gnu/gcc-linaro-7.5.0-2019.12-i686_aarch64-linux-gnu.tar.xz
    
    tar Jxf binutils-2.33.1.tar.xz
    tar Jxf aarch64-linux-gnu/gcc-linaro-7.5.0-2019.12-i686_aarch64-linux-gnu.tar.xz
    
    export CROSS_COMPILE=$(pwd)/gcc-linaro-7.5.0-2019.12-i686_aarch64-linux-gnu/bin/aarch64-linux-gnu-
    export PREFIX=$(pwd)/binutils-2.33.1-aarch64-linux-gnu
    
    mkdir binutils
    cd binutils
    ../binutils-2.33.1/configure --host=aarch64-linux-gnu --with-static-standard-libraries --program-prefix=aarch64-linux-gnu- --prefix=${PREFIX}
    make all install
    cd -
    
    ls -Gg binutils-2.33.1-aarch64-linux-gnu/bin/
    total 98316
    -rwxr-xr-x 1 5744720 Dec 13 23:41 aarch64-linux-gnu-addr2line
    -rwxr-xr-x 2 5926304 Dec 13 23:41 aarch64-linux-gnu-ar
    -rwxr-xr-x 2 8713560 Dec 13 23:41 aarch64-linux-gnu-as
    -rwxr-xr-x 1 5696976 Dec 13 23:41 aarch64-linux-gnu-c++filt
    -rwxr-xr-x 1  108784 Dec 13 23:41 aarch64-linux-gnu-elfedit
    -rwxr-xr-x 1 6314920 Dec 13 23:41 aarch64-linux-gnu-gprof
    -rwxr-xr-x 4 9739912 Dec 13 23:42 aarch64-linux-gnu-ld
    -rwxr-xr-x 4 9739912 Dec 13 23:42 aarch64-linux-gnu-ld.bfd
    -rwxr-xr-x 2 5789736 Dec 13 23:41 aarch64-linux-gnu-nm
    -rwxr-xr-x 2 6529712 Dec 13 23:41 aarch64-linux-gnu-objcopy
    -rwxr-xr-x 2 9437264 Dec 13 23:41 aarch64-linux-gnu-objdump
    -rwxr-xr-x 2 5926304 Dec 13 23:41 aarch64-linux-gnu-ranlib
    -rwxr-xr-x 2 2980560 Dec 13 23:41 aarch64-linux-gnu-readelf
    -rwxr-xr-x 1 5735096 Dec 13 23:41 aarch64-linux-gnu-size
    -rwxr-xr-x 1 5732376 Dec 13 23:41 aarch64-linux-gnu-strings
    -rwxr-xr-x 2 6529704 Dec 13 23:41 aarch64-linux-gnu-strip
    

    然后您可以将复制 binutils 可执行文件替换到您的目标系统中:如果您的问题与 binutils 相关,这可能会很好地解决它。

    【讨论】:

      猜你喜欢
      • 2022-12-19
      • 2012-08-21
      • 1970-01-01
      • 1970-01-01
      • 2021-04-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多