-1

CentOS 6 から Ubuntu 14.04 に、いくつかの非常に古い (そして大規模なベースの) コードを移植しています。予想される古いバージョンのgcc、修正されたリンカー参照などをインストールしたことに注意してください。

ビルドの試みは進行中ですが、1 つのことに行き詰まっています。type の構造体を作成しようとしている C ファイルがありますrusageが、Ubuntu 環境では次のエラーが表示されます。error: storage size of 'rusage' isn't known

私が知る限り、私のパスはすべて正しいように見えます。各システムのtime.hおよびresource.hシステムファイルも調べました(CentOSでは機能し、Ubuntuでは機能しません)。rusageが実際に定義されているwait.hファイルへの参照があるようですが、まったく同じです。

私のUbuntu環境では、他に何が欠けている可能性がありますか?

編集:MCVEっぽい詳細を追加...

私のビルドは次のエラーで停止しています:

vmodem.c:6747: error: storage size of 'rusage' isn't known

ファイル内のその行は単純です:

struct rusage rusage

必要なインクルードもすべてそのファイルにあります ( <sys/time.h><sys/wait.h>など)。

この場合、他に何を提供できるかわかりません...

4

2 に答える 2

2

getrusageCentOS 6 と Ubuntu 14.04 の両方のマニュアル ページには、<sys/time.h><sys/resource.h>.

を含めると述べました<sys/wait.h>。とstruct rusage;の宣言が有効wait3wait4なるように前方宣言がありますが、その前方宣言は type の構造体を宣言するには不十分ですrusage

CentOS 6wait.hには行が含まれており#include <sys/resource.h>resource.h完全に宣言されているため、CentOS 6では機能しますstruct rusageが、Ubuntu 14.04には行wait.hが含まれていません#include <sys/resource.h>

于 2015-12-29T19:46:25.830 に答える
0

coredump と Eugene Sh に感謝します。ヒントについては...追加するの#include <sys/resource.h>がコツでした。

CentOS では機能するが、Ubuntu では機能しないものだったに違いありません。いずれにせよ、単にリソース ヘッダー ファイルをインクルードしても問題はありません。

于 2015-12-29T19:32:18.043 に答える