問題タブ [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.
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>
が世界で最良の選択肢ではないことを知っています.
c++ - ストリームコードをgccにリンクできません
次のコードのコンパイルに問題があります。
コンパイルする:
コンパイルはいくつかの警告を出します:
結果のバイナリは正常に実行されているように見えます。
出力ファイルは作成されますが、空です!?!
問題が何であるかについてのポインタに非常に感謝します。
c++ - C:.objファイルを分析し、一部の関数のサイズを正確なバイト単位で測定するユーティリティ?
いくつかのC関数の正確なバイトサイズを調べる必要がありました。gccコンパイラによって生成された.objファイルを分析できるユーティリティの推奨事項はありますか?
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です。
誰かが以前に同様の問題を抱えていますか?
c - ubuntu gcc コンパイラに関する質問
ubuntu x86_64 の build-essential パッケージをインストールし、c プログラムと c++ プログラムをコンパイルすると正常に動作しますが、コンパイルされたバイナリに「Ubuntu linaro」が表示されます。これを取り除く方法はありますか?
c++ - gcc-4 と互換性のある gcc-3 バイナリ
gcc 3.4.3 でコンパイルされたスタティック ライブラリがあります。gcc-4 でコンパイルされるコードでこれを使用したいと考えています。gcc-3 と gcc-4 バイナリには互換性がなく、ライブラリを再コンパイルする必要があることを漠然と読みましたが、これについて確認したいだけです。gcc-4 で使用できる gcc-3 ライブラリはありませんか?
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 があります - 誰かが見てくれたらありがたいです。
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 のアップグレードに固有の何かがあります。
c - GCC 3.4 で -Werror オプションの動作をシミュレートする可能性はありますか?
GCC の 4.4 -Werror オプションのように、GCC 3.4 コンパイラにすべての警告をエラーにさせる希望はありますか?
ありがとう