1

ソース コードには、スタンドアロンの静的テンプレート関数が多数含まれています。xlc++IBM のネイティブコンパイラを使用して AIX 7.1 Power 7 システムでコンパイルする必要があります。staticスタンドアロン関数でキーワードを使用することは廃止された慣行であり、 ではサポートされていないxlc++ため、プログラムをコンパイルするために、関数宣言からそのキーワードを削除しました。プログラムが正常にコンパイルされた後、最初の実行がクラッシュしました (Linux/g++同じ入力データで完全に安定しています)。

でデバッグしようとしましdbxたが、デバッガーは と について不平を言いましinternal errorsegmentation fault in extend_brk。メモリ クォータは使用されないため、メモリ/ディスク容量の不足ではありません。システムは完全なコア ダンプを作成するように構成されており、プログラムは-gオプションでコンパイルされています。すべてのライブラリは静的にリンクされているため、共有ライブラリで例外をスローしても問題ありません。xlc++1) キーワードを削除せずに静的テンプレート関数をコンパイルstaticできるので、すべてのコードが RHEL システムと同じであることを確認できますか? 2) デバッガが動かないのはなぜですか?

4

1 に答える 1

0

32/64 ビットの移植性の問題があったようです。その状況ではstaticキーワードを削除しても問題はありません。.kshrc ファイルに次の行を追加した後、問題はなくなりました。

export OBJECT_MODE=64

デフォルトでは、IBM XL コンパイラーは 64 ビットの AIX 7.1 システムでも 32 ビット・モードで実行されます。デフォルトの動作を上書きするには、プログラマーは環境変数を設定するか、コンパイラーに -q64 パラメーターを指定します。

于 2013-03-20T14:33:04.053 に答える