問題タブ [gcc]
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.
gcc - g++/gcc 3.2.3 から 4.2.4 へのパフォーマンスの向上
私たちは g++ バージョン 3.2.3 と 4.2.4 を見てきました。4.2.4 では、一部のコード ベースのパフォーマンスが大幅に向上しています。
gcc buzilla データベースを検索して、劇的に改善された可能性のあるバグに関するヒントを見つけようとしましたが、候補として際立った個々のバグは見つかりませんでした。
改善は、ゆっくりと影響を与えた多くの小さな変更の結果ですか? それとも、違いをもたらした可能性のある上位 5 つの改善セットがありましたか?
背景として、私たちのコード ベースは、STL コンテナーとアルゴリズム、および「inline」キーワードなどの C++ 機能をうまく利用しています。
gcc - 組み込み関数を使用するときに GCC に 3 つ以上の SIMD レジスタを使用させるにはどうすればよいですか?
私はいくつかのコードを書いており、SIMD 組み込み関数 SSE2/3 を使用して高速化しようとしています。私のコードは、いくつかのデータを XMM レジスターにロードして何度も操作する必要があるような性質のものです。生成されたアセンブラー コードを見ていると、XMM0 と XMM1 で別のものをリロードするために、GCC がデータをメモリにフラッシュし続けているようです。x86-64 用にコンパイルしているので、15 個のレジスタがあります。GCC が 2 つしか使用していないのはなぜですか? さらに使用するように依頼するにはどうすればよいですか? レジスタに値を「固定」する方法はありますか? 変数定義に "register" キーワードを追加しましたが、生成されたアセンブリ コードは同じです。
c++ - C++ で C 構造体をサブクラス化し、C コードで構造体へのポインターを使用することは可能ですか?
これを行う際に副作用はありますか:
C コード:
C++ コード:
C++ コードの周りに がありextern "C"
、各コードは独自のコンパイル ユニット内にあります。
これはコンパイラ間で移植可能ですか?
c++ - GNU コンパイラの警告「クラスには仮想関数がありますが、非仮想デストラクタがあります」
C++ でインターフェイスを定義しました。つまり、純粋仮想関数のみを含むクラスです。
インターフェイスのユーザーがインターフェイスへのポインターを介してオブジェクトを削除することを明示的に禁止したいので、次のようなインターフェイスの保護された非仮想デストラクタを宣言しました。
GNU コンパイラは、次のような警告を表示します。
クラス 'ITest' には仮想関数がありますが、非仮想デストラクタがあります
デストラクタが保護されると、仮想化または非仮想化の違いは何ですか?
この警告は安全に無視したり黙らせたりできると思いますか?
gcc - 32ビットモードでgccアトミック操作をコンパイルするときのリンクエラー
私は次のプログラムを持っています:
マルチCPU64ビットIntelマシンで実行されているLinuxでGCC4.2.2を使用してこのプログラムをコンパイルしています。
プログラムを64ビットモードでコンパイルすると、正常にコンパイルおよびリンクされます。
32ビットモードでコンパイルすると、次のエラーが発生します。
実際に32ビットプロセッサで実行することはありませんが、いくつかの32ビットライブラリとリンクできるように、32ビットの実行可能ファイルが必要です。
私の2つの質問は次のとおりです。
32ビットモードでコンパイルするとリンクエラーが発生するのはなぜですか?
32ビットライブラリとリンクしながら、プログラムをコンパイルしてリンクする方法はありますか?
c++ - GCC 3.4.4 上の C++ tr1 (Nokia N810 タブレット コンピューター用)
GCC 3.4.4 (Nokia N810タブレット コンピューター用) で動作する C++ tr1メンバー (特に shared_ptr ですが、関数とバインド、およびその他すべてが必要です) を取得するには何が必要ですか。
誰かがこれをしましたか?これを試みましたか?
このデバイス用にクロスコンパイルするために GCC 4.x にアップグレードすることは現実的ではないかもしれません(しかし、それを行った場合は、ぜひお知らせください)。
多くのアプローチがあるかもしれませんが、他の人がぶつかった行き止まりは避けたいと思います。
ブーストはかなり相互に依存する可能性があるため (1 つのブースト ヘッダーを持ち込むと、さらに 20 個のヘッダーが追加される)、コード サイズを抑えることが重要です。
ありがとうございました!
c++ - C++ プログラムを介して電子メールを送信する方法は?
C++ からメールを送信するにはどうすればよいですか? 使用できる優れたクロスプラットフォーム (MS Windows、Linux など) ライブラリはありますか? GCC (MS Windows では cygwin) を使用しています。
gcc - --dependのためにグーグルする方法?
サードパーティベンダーから受け取った最新のmakefileには、ビルドルールの終わりに応じて--を含むルールが含まれているため、Googleで検索すると思いましたが、できる限り表示するように説得することはできません。正確に文字が含まれるすべてのページ--depend
引用符で囲んでみました"--depend":高度な検索を試しました:バックスラッシュ "\-\-depend"を試しました(無駄な)ある種の未公開の正規表現検索があることを期待しています利用可能。
私は盲目的に明白な何かを見逃していますか?
これは--dependが何をするかについての質問ではないことに注意してください、私は知っています、それはあなたが非常に正確でプログラマー指向のテキストをどのようにグーグルするかについての質問です。
c++ - gcc で C/C++ ソースからアセンブラ出力を取得するにはどうすればよいですか?
どうやってこれを行うのですか?
何かがどのようにコンパイルされているかを分析したい場合、出力されたアセンブリ コードをどのように取得しますか?
gcc - リンカーの問題 - 未定義の参照
ライブラリで使用したい関数に「未定義の参照」があることを示すコンパイラに問題があります。問題に関する情報を共有させてください。
- Cのgccでクロスコンパイルしています。
- プロトタイプを含む別のヘッダーを含むインクルードヘッダーを介してアクセスされるライブラリ関数を呼び出しています。
- -I を使用してヘッダー ディレクトリを含めましたが、確実に見つかっています。
- 最初に .o ファイルを作成してから、別のコマンドでそれらをリンクしています。
だから私の考えでは、ライブラリファイルをインクルードする順序かもしれませんが、それらを順序付ける正しい方法はわかりません. .o ファイルの前後に headers フォルダーを含めてみました。
リンカーがどのように機能するかについての説明が素晴らしいと示唆する人もいます。
ありがとう!
回答への対応
- .a ライブラリ ファイルはなく、ライブラリには .h と .c だけがあるため、-l は適切ではありません
- ライブラリ ファイルについての私の理解では、それは単なるヘッダー ファイルとソース ファイルのコレクションですが、ソースから作成された .o ファイルのコレクションではないでしょうか?!
- ライブラリ オブジェクト ファイルが作成されていません。はい、インクルードとライブラリの違いを理解していないようです...私はそれに取り組みます:-)
すべての応答に感謝します! 私は図書館について多くのことを学びました。すべての回答を受け入れられた回答として掲載したいと思います:-)