簡體   English   中英

安裝在 Mac M1 上的 Homebrew g++ 報告了“addend too big for relocation”錯誤

[英]"addend too big for relocation" error reported by Homebrew g++ installed on Mac M1

我試圖用 Mac M1 上安裝的 Homebrew g++ 編譯以下程序:

// name: a.cpp
#include <bits/stdc++.h>
using namespace std;
vector<int> vec[1145140];
int main(){
    return 0;
}

編譯命令是/opt/homebrew/bin/g++-11 a.cpp 然后報錯如下:

/var/folders/qw/n1dkgxj51tb7whl23crnsl880000gn/T//ccrMi6mY.s:431:2: error: addend too big for relocation
        adrp    x0, _vec@PAGE+27483360
        ^
/var/folders/qw/n1dkgxj51tb7whl23crnsl880000gn/T//ccrMi6mY.s:432:2: error: addend too big for relocation
        add     x19, x0, _vec@PAGEOFF+27483360;momd
        ^
/var/folders/qw/n1dkgxj51tb7whl23crnsl880000gn/T//ccrMi6mY.s:432:2: error: fixup value out of range
        add     x19, x0, _vec@PAGEOFF+27483360;momd

我對此感到困惑,因為當這個程序用 clang ( c++ a.cpp ) 編譯時沒有任何問題。 我想知道這是因為我忘記添加一些編譯選項,還是這是 g++ 或其他東西中的錯誤。 如果有人可以幫助我,我將不勝感激。

一些可能有幫助的信息:

/opt/homebrew/bin/g++-11 -v

Using built-in specs.
COLLECT_GCC=/opt/homebrew/bin/g++-11
COLLECT_LTO_WRAPPER=/opt/homebrew/Cellar/gcc/11.1.0_1/libexec/gcc/aarch64-apple-darwin20/11.1.0/lto-wrapper
Target: aarch64-apple-darwin20
Configured with: ../configure --prefix=/opt/homebrew/Cellar/gcc/11.1.0_1 --libdir=/opt/homebrew/Cellar/gcc/11.1.0_1/lib/gcc/11 --disable-nls --enable-checking=release --enable-languages=c,c++,objc,obj-c++,fortran --program-suffix=-11 --with-gmp=/opt/homebrew/opt/gmp --with-mpfr=/opt/homebrew/opt/mpfr --with-mpc=/opt/homebrew/opt/libmpc --with-isl=/opt/homebrew/opt/isl --with-zstd=/opt/homebrew/opt/zstd --with-pkgversion='Homebrew GCC 11.1.0_1' --with-bugurl=https://github.com/Homebrew/homebrew-core/issues --build=aarch64-apple-darwin20 --with-system-zlib --disable-multilib --with-native-system-header-dir=/usr/include --with-sysroot=/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk
Thread model: posix
Supported LTO compression algorithms: zlib zstd
gcc version 11.1.0 (Homebrew GCC 11.1.0_1) 

我只能建議這個問題的臨時解決方案。 卸載 Homebrew 並下載 Rosetta 2 下的 Intel 版本。 然后你可以在 Rosetta 2 下下載 Intel 版本的 GCC。它在我看來沒有任何問題,在我看來 G++11 的 M1 版本仍然有一些錯誤。

有關如何執行此操作的鏈接: How to run the Homebrew installer under Rosetta 2 on M1 Macbook

PS:我在嘗試下載 Intel 版本的 GCC 時遇到了一個問題。 它讀到有新版本的 Xcode 命令行工具可用,我應該安裝它們,盡管在嘗試下載 GCC 之前我已經將它們更新到最新版本。 這可以很容易地解決,只需從 Apple 的網站下載 Xcode CLT 的注釋版本(不是最新的),您可以在 Homebrew 提供的日志中找到鏈接。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM