問題タブ [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.
math - Math.h で関数を呼び出すとリンク エラーが発生するのはなぜですか?
で関数を呼び出そうとするとmath.h
、次のようなリンク エラーが発生します。
しかし、#include <math.h>
私はgccを使用して次のようにコンパイルしています:
リンカが の定義を見つけられないのはなぜsqrt
ですか?
c++ - C++ マクロをデバッグするための一般的な方法はありますか?
一般に、定義にいくつかのプリプロセッサ条件付き要素を含むネストされたマクロのチェーンがときどきあります。実際のコードが実行されているのを直接見るのは難しいため、これらはデバッグが困難な場合があります。
少し前に、それらを展開するコンパイラ (gcc) フラグを見つけたのを漠然と覚えていますが、これを実際に機能させるのに苦労しました。
c++ - __stdcallでdllをコンパイルするGCC
Visual Studio 2008 内で __stdcall を使用して dll をコンパイルすると、dll 内のコンパイルされた関数名は次のようになります。
関数名
ただし、wx-dev-cpp を使用して GCC を使用して同じ dll をコンパイルすると、GCC は関数が持つパラメーターの数を追加するため、Dependency walker を使用した関数の名前は次のようになります。
FunctionName@numberOfParameters または == FunctionName@8
dll でエクスポートされたシンボルから @nn を削除するように GCC コンパイラに指示するにはどうすればよいですか?
c - メモリ割り当てエラーをシミュレートする方法
私の C アプリケーションは、独自のメモリ管理を行う 3rd ライブラリを使用しています。堅牢にするために、私のアプリケーションには、空きメモリ不足によるライブラリ関数の失敗に対処するコードがあります。
このコードをテストしたいと思います。そのためには、メモリ不足による障害をシミュレートする必要があります。
これにはどのツールが推奨されますか? 私の環境は Linux/gcc です。
linux - Linuxカーネルの可能性の高い/可能性の低いマクロはどのように機能し、それらの利点は何ですか?
Linuxカーネルのいくつかの部分を調べてみたところ、次のような呼び出しが見つかりました。
また
私はそれらの定義を見つけました:
それらが最適化のためのものであることは知っていますが、どのように機能しますか?そして、それらを使用することで、どのくらいのパフォーマンス/サイズの低下が期待できますか?そして、少なくともボトルネックコード(もちろんユーザースペース)では、面倒な(そしておそらく移植性を失う)価値があります。
optimization - IntelAtomのGCC最適化フラグ
IntelAtomプロセッサー用のパフォーマンスクリティカルなアプリケーションを開発しています。
このCPUに最適なgcc最適化フラグは何ですか?
gcc - 「コンマの左側のオペランドは効果がありません」という警告を無効にする gcc スイッチはどれですか?
これは、gcc で -Werror を強制する、より大きなコード ベースの一部です。この警告は、変更すべきではないサード パーティのコードで生成されます (実際に修正方法を知っています) が、特定の警告を無効にすることができます。今回は man gcc に失敗したので、gcc マスターに教えてもらいましょう。ティア。
macos - XcodeをインストールせずにOSXにgccをインストールする方法はありますか?
私はそれから地獄をグーグルで検索しました、そしてXcode(少なくとも1.5GBのスペースを必要とします)をインストールせずにOSXにgccをインストールする方法はないようです。必要なのはgccだけで、Xcodeに付属している他のジャンクはありません。そしてこの時点で、他の種類のCコンパイラを使用します。
Xcodeを簡単にインストールできることはわかっていますが、元のインストールディスクもインターネット接続も持っていないので、それは重要ではありません。
だから...誰か提案はありますか?
編集:不明な点がある場合は申し訳ありませんが、ヘッダーも必要です。現在、finkを介してgcc4をインストールしており、共有ライブラリもダウンロードしています。進捗状況を更新します。
編集2:わかりました。finkを使用してgccを正常にインストールしました。しかし、それはほとんど役に立たない:「エラー:Cコンパイラは実行可能ファイルを作成できない」。調べてみると、Appleのデベロッパツールがインストールされていないことがエラーの原因であることがわかりました。おそらく、Xcodeでのみ利用できるすべてのライブラリやヘッダーなどが必要なためです。
c - GCC が構造体を最適化しないのはなぜですか?
システムでは、特定のプリミティブをメモリ内の特定のポイントに揃えることが要求されます (int から 4 の倍数のバイト、short から 2 の倍数のバイトなど)。もちろん、これらを最適化して、パディングで無駄なスペースを最小限に抑えることができます。
私の質問は、GCC がこれを自動的に行わないのはなぜですか? より明白なヒューリスティック (最大サイズ要件から最小サイズへの順序変数) が何らかの形で欠けていますか? 一部のコードは、その構造体の物理的な順序に依存していますか (それは良い考えですか)?
GCCは多くの点で非常に最適化されていますが、これはそうではありません.
assembly - GCC インライン アセンブラ、レジスタ サイズの混在 (x86)
次のアセンブラ警告を取り除く方法を知っている人はいますか?
コードは x86、32 ビットです。
コンパイルすると、次の(非常に有効な)警告が表示されます。
私が探しているのは、%0 の下位 16 ビット サブレジスタにアクセスしたいことをコンパイラ/アセンブラに伝える方法です。バイト サブレジスタ (この場合は AL と AH) へのアクセスについても知っておくとよいでしょう。
既に "q" 修飾子を選択しているため、コンパイラは EAX、EBX、ECX、または EDX を使用する必要があります。コンパイラーがサブレジスターを持つレジスターを選択する必要があることを確認しました。
特定のレジスター (およびそのサブレジスター) を使用するように asm コードに強制できることはわかっていますが、レジスター割り当てのジョブはコンパイラーに任せたいと考えています。