質問

再配置が収まるように切り詰められました: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を渡すことで実行でき、すべてのオブジェクトファイルで使用する必要があります。ただし、これによりオーバーヘッドが多少増加する場合があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top