問題タブ [gcc3]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
922 参照

c++ - gcc 4.xx シリーズのコンパイラが MinGW によってデフォルトでインストールされないのはなぜですか?

現在、MinGWはデフォルトで gcc コンパイラの 3.xx シリーズのみをインストールします。ただし、コンパイラの 4.xx シリーズはしばらく前から出ているようで、他の人が言及しているように、問題なく動作しているようです。まだ 4.xx バージョンに移行していない理由と、新しいバージョンの gcc を使用してはならない理由はありますか?

0 投票する
2 に答える
967 参照

c++ - ベクター:: GCC 3.4.3 の push_back バグ?

GCC を使用して ARM 用にビルドすると、次のコードがクラッシュします。

私のコンパイラは次のとおりarm_v5t_le-gcc (GCC) 3.4.3 (MontaVista 3.4.3-25.0.30.0501131 2005-07-23)です。クラッシュはデバッグ用のビルドでは発生しませんが、最適化を -O2 に設定すると発生します。

はい、問題を再現するには foo 関数が必要です。これは最初は非常に混乱しましたが、push_back 呼び出しがインライン化されていない場合にのみクラッシュが発生することがわかりました。push_back メソッドが複数回呼び出されていることに GCC が気付いた場合、GCC はそれを各場所にインライン化しません。たとえば、main 内で push_back を 2 回呼び出して、クラッシュを再現することもできます。foo を static にすると、gcc はそれが呼び出されないことを認識し、最適化します。その結果、push_back が main にインライン化され、クラッシュが発生しなくなります。

gcc 4.3.3 を使用して x86 でこれを試しましたが、そのバージョンでは問題が修正されているようです。

だから、私の質問は次のとおりです。

他の誰かがこれに遭遇しましたか?おそらく、それを防ぐために渡すことができるコンパイラフラグがいくつかあります。

これは gcc のコード生成のバグですか、それとも stl 実装 (bits/stl_bvector.h) のバグですか? (時間があるときに自分でテストする予定です)

コンパイラに問題がある場合、4.3.3 にアップグレードすると何が修正されますか? それとも、arm から x86 に切り替えますか?

ちなみに、他のほとんどのvector<bool>方法はうまくいくようです。はい、私は使用することvector<bool>が世界で最良の選択肢ではないことを知っています.

0 投票する
1 に答える
611 参照

c++ - ストリームコードをgccにリンクできません

次のコードのコンパイルに問題があります。

コンパイルする:

コンパイルはいくつかの警告を出します:

結果のバイナリは正常に実行されているように見えます。

出力ファイルは作成されますが、空です!?!

問題が何であるかについてのポインタに非常に感謝します。

0 投票する
1 に答える
3018 参照

c++ - C:.objファイルを分析し、一部の関数のサイズを正確なバイト単位で測定するユーティリティ?

いくつかのC関数の正確なバイトサイズを調べる必要がありました。gccコンパイラによって生成された.objファイルを分析できるユーティリティの推奨事項はありますか?

0 投票する
3 に答える
1763 参照

c++ - シンボルを非表示にしたときにdynamic_castが失敗しました

私は多くの静的ライブラリを持っています。1つはstatic_lib_a.aです。ダイナミックライブラリdynamic_lib.soを作成して、それらをまとめます。

static_lib_a.aでは、xerces3.1.1を使用してxmlを解析します。以下は、 static_lib_a.aのコードスニペットです。

pNodeのタイプはxerces::DOMNodeです。xerces::DOMElementのオブジェクトに割り当てられます。このコード行はダウンキャストを実行します。

dynamic_lib.soでstatic_lib_a.aのすべてのシンボルを非表示にするために、-fvisibility=hiddenを使用してこの静的ライブラリを構築します。--fvisibility = hiddenを追加すると、pElementNodeは実行時にNULLポインターを返すことがわかりました。

gccコンパイラのバージョンは3.4.4です。

誰かが以前に同様の問題を抱えていますか?

0 投票する
2 に答える
290 参照

c - ubuntu gcc コンパイラに関する質問

ubuntu x86_64 の build-essential パッケージをインストールし、c プログラムと c++ プログラムをコンパイルすると正常に動作しますが、コンパイルされたバイナリに「Ubuntu linaro」が表示されます。これを取り除く方法はありますか?

0 投票する
1 に答える
1258 参照

c++ - gcc-4 と互換性のある gcc-3 バイナリ

gcc 3.4.3 でコンパイルされたスタティック ライブラリがあります。gcc-4 でコンパイルされるコードでこれを使用したいと考えています。gcc-3 と gcc-4 バイナリには互換性がなく、ライブラリを再コンパイルする必要があることを漠然と読みましたが、これについて確認したいだけです。gcc-4 で使用できる gcc-3 ライブラリはありませんか?

0 投票する
1 に答える
286 参照

c++ - ブースト 1.36 および C++ を使用する RHEL4 リリースの問題

RHEL4 リリース ビルドでしか見られない不可解な問題に苦しんでいます。RHEL4 (gcc 3.4.6) でリリース ビルド タイプを使用すると、一部の単体テスト (boost 1.36 単体テスト フレームワークを使用) が失敗します。RHEL5 リリースまたはデバッグ ビルド タイプ (gcc 4.1.2、boost-1.39) を使用しても問題は発生しません。Visual Studio 2005 (boost-1.36 を使用) または 2008 (boost-1.39 を使用) を使用した Windows 32 ビットまたは 64 ビットでも表示されません。

これは微妙なメモリの問題が原因ではないかと疑って、テスト アプリケーションで valgrind を実行しました (問題が発生しない最小限のケース)。「フル、到達不能」モードを使用して valgrind を実行したときの結果は次のとおりです。

もちろん、これをデバッグ モードで実行しました (ただし、前述したように、エラーはリリース モードでのみ発生します)。リリース モードで valgrind を実行すると、同じ出力が得られます (行番号などの詳細が少ない可能性があります)。このことから、問題はブースト 1.36、またはおそらく init_unit_test_suite の私の定義にあるように見えますか? 明らかに、私が試すことができることの 1 つは、すべてのプラットフォームで boost-1.39 を使用して実行することです。残念ながら、現在は RHEL4 と VS2005 で boost-1.36 を使用しているため、これはまだ実用的ではない可能性があります。

また、テストが失敗した時点で特定のロガー出力を強制的にコンソールに出力すると、テストが成功することもわかります (良くないことはわかっています)。これは、すべてのロガー出力にコメントを付けて valgrind を実行したことが原因である可能性があるのではないかと疑っています。init_unit_test_suite 関数のコード スニペットが必要な場合。それが役に立ったら、私はそれを投稿できます。これを解決するためのアイデアは大歓迎です。

2011 年 5 月 26 日編集:

ここに init_unit_test_suite があります - 誰かが見てくれたらありがたいです。

0 投票する
1 に答える
192 参照

linux - 2.9x からの GCC のアップグレード

PS2 Linux マシン (mips) でコンパイラを 2.95.2 からアップグレードしようとしましたが、頭が爆発しそうです。Linux が得意だと主張するつもりはありません。

最初に行ったプロセスについて説明します。

gcc 3.3.1のダウンロード、構成、インストール

これは約1時間コンパイルされ、その一部であるエラーが発生しました。

グーグルで調べた後、これは私のbinutilsのアップグレードが必要であることを示しているようです。

binutils 2.13.2ダウンロード インストール

このコンパイル/インストールは問題ありません。

gcc 3.3.1から gcc3 をコンパイルしようとすると、configure 中にエラーが発生することがわかっています。

単純な helloworld.cpp プログラムでさえ、取得せずにコンパイルすることはできません

問題が -mwarm-short-loop であるというアイデアは、グーグルでゼロを返しますが、これは珍しいことです。または、私が見逃した gcc のアップグレードに固有の何かがあります。

0 投票する
3 に答える
67 参照

c - GCC 3.4 で -Werror オプションの動作をシミュレートする可能性はありますか?

GCC の 4.4 -Werror オプションのように、GCC 3.4 コンパイラにすべての警告をエラーにさせる希望はありますか?

ありがとう