質問
再配置が収まるように切り詰められました:R.X86_64_PC32と `.bss '
コンパイル時にg ++でこのリンカーエラーが発生します:
この定義によりコンパイルが中断されるため、残りのコードは重要ではありません。時間関数はsys / time.hにあります。 64ビットRHELでコンパイル。
long ntime() {
struct timeval tp;
gettimeofday(&tp, (struct timezone *)0);
return (tp.tv_sec*1000 + tp.tv_usec / 1000);
}
これが間違っている理由を教えてください
事前に感謝します。
解決
リンカエラーが発生する理由はわかりませんが、struct timevalを静的にする特別な理由はありますか?ローカルにすることは同じくらい速く、ヒープ(まあ、bss)スペースを節約しながら、関数をスレッドセーフにします。
編集:ここに問題があります。静的ヒープ領域で2GBを超えました。その一部を動的に割り当てるか、メモリモデルを変更します。 gccでは、これは-mcmodel = mediumを渡すことで実行でき、すべてのオブジェクトファイルで使用する必要があります。ただし、これによりオーバーヘッドが多少増加する場合があります。
所属していません StackOverflow