0

Pro*C ベースのバッチ ファイルをコンパイルしようとすると、プロセス「proc」が 1 CPU コアの 100% で停止し、システムがプロセスを OOM で強制終了する必要があるポイントまでメモリが増加し始めます (マシンには 16GB のメモリがあり、プロセスは 9GB まで増加しました)。

誰もこの動作を見たことがありますか?

追加情報として:

-mk はメイン パッケージのインストールからのもの
です -.pc ファイルは元のファイルです (dtesys.pc など、いくつかコンパイルしようとしました) -Lib
は正しくコンパイルされて
います -環境変数は正しく設定されています

4

1 に答える 1

1

はい、123 行目に再帰的に含まれているため、limits.h です。

 /* Get the compiler's limits.h, which defines almost all the ISO constants.
    We put this #include_next outside the double inclusion check because
    it should be possible to include this file more than once and still get
    the definitions from gcc's header.  */
#if defined __GNUC__ && !defined _GCC_LIMITS_H_
/*  `_GCC_LIMITS_H_' is what GCC's file defines.  */
# include_next <limits.h>
#endif

したがって、解決策は、parse=none オプションを Pro*C プリコンパイラに渡すことです。

proc parse=none iname=filename.pc oname=filename.c

または、2 番目のオプション: まずソースを c プリコンパイラでプリコンパイルして、pc ファイルを取得します。

cpp -P -E yourfile.someextension -o yourfile.pc

次に、再帰なしで解析された limits.h を取得します。

Pro*C はラインマーカーと混同される可能性のあるプログラムであるため、-P オプションが必要です。

Pro*C は非従来型の出力と混同される可能性があるプログラムであるため、-E オプションが必要です。

于 2019-06-06T19:42:49.443 に答える