GCC 抛出错误重新定位被截断以适应:针对".bss"R_X86_64_32

gcc throwing error relocation truncated to fit: R_X86_64_32 against `.bss'

本文关键字:针对 X86 bss 新定位 错误 出错 定位 GCC      更新时间:2023-10-16
#include <bits/stdc++.h>
using namespace std;
#define mod 1000000007
int dp[100000][100000];
int main()
{
    long int n;
    cin>>n;
    vector <int> a(n);
    for(long int i=0;i<n;i++)
        cin>>a[i];
    memset(dp,0,sizeof(dp));
    long long int maxi=0;
    for(long int i=0;i<n;i++)
    {
        for(long int j=i;j<n;j++)
        {
            dp[i][j]=dp[i][j-1]^a[j];
             dp[i][j]%=mod;
             if(maxi<dp[i][j])
                 maxi=dp[i][j];
        }
    }
    cout<<maxi;
    return 0;
}       

编译器抛出错误:在函数_GLOBAL__sub_I_dp': (.text.startup+0x185): relocation truncated to fit: R_X86_64_32 against .bss'(.text.startup+0x194):重新定位被截断以适应:R_X86_64_32针对".bss"错误:LD 返回 1 个退出状态这个错误是什么?

您的全局数组占用 40GB;您不能将其放在程序的.data部分中。它不适合那里。

即使它做到了,你最终也会得到一个巨大的二进制文件,所以这首先是一个坏主意。

如果您安装了 45+GB RAM,则可以为此使用动态分配(通过 std::vector),否则,请重新考虑您的代码以需要更少的内存。