タグ付けされた質問 「gcc」

GCCはGNUコンパイラコレクションです。Linux上のC、C ++、Go、Fortran、Adaの事実上の標準コンパイラであり、他の多くの言語やプラットフォームもサポートしています。コンパイラとは別に、GCCにはいくつかのプラットフォームやシステムで広く使用されているツールチェーン(libc、libstdc ++、objdump、nmなど)があります。

12
GCCがa * a * a * a * a * aを(a * a * a)*(a * a * a)に最適化しないのはなぜですか?
科学的なアプリケーションで数値の最適化を行っています。私が気づいたことの1つは、GCCはにpow(a,2)コンパイルすることで呼び出しを最適化しますa*aが、呼び出しpow(a,6)は最適化されておらず、実際にはライブラリ関数を呼び出すpowため、パフォーマンスが大幅に低下します。(対照的に、インテルC ++コンパイラー(実行可能icc)は、のライブラリー呼び出しを排除しますpow(a,6)。) 私は好奇心だと、私は交換したときにということであるpow(a,6)とa*a*a*a*a*aGCC 4.5.1とオプション「を使用して-O3 -lm -funroll-loops -msse4」、それは5つの使用mulsd説明書を: movapd %xmm14, %xmm13 mulsd %xmm14, %xmm13 mulsd %xmm14, %xmm13 mulsd %xmm14, %xmm13 mulsd %xmm14, %xmm13 mulsd %xmm14, %xmm13 私が書いた場合(a*a*a)*(a*a*a)、それは生成されます movapd %xmm14, %xmm13 mulsd %xmm14, %xmm13 mulsd %xmm14, %xmm13 mulsd %xmm13, %xmm13 乗算命令の数を3に減らすと、icc同様の動作になります。 コンパイラがこの最適化トリックを認識しないのはなぜですか?

23
高放射性環境で使用するためのアプリケーションのコンパイル
私たちは、電離放射線の衝撃を受けた環境のシールドされたデバイスに導入された組み込みC / C ++アプリケーションをコンパイルしています。ARM向けにGCCとクロスコンパイルを使用しています。デプロイすると、アプリケーションが誤ったデータを生成し、予想よりも頻繁にクラッシュします。ハードウェアはこの環境用に設計されており、アプリケーションはこのプラットフォームで数年間実行されています。 コードに加えることができる変更、または単一イベントの混乱によって引き起こされるソフトエラーとメモリ破損を特定/修正するために実行できるコンパイル時の改善はありますか?他の開発者は、長期実行アプリケーションでのソフトエラーの悪影響を軽減することに成功しましたか?
1456 c++  c  gcc  embedded  fault-tolerance 

27
致命的なエラー:Python.h:そのようなファイルまたはディレクトリはありません
C拡張ファイルを使用して共有ライブラリを構築しようとしていますが、最初に以下のコマンドを使用して出力ファイルを生成する必要があります。 gcc -Wall utilsmodule.c -o Utilc コマンドを実行すると、次のエラーメッセージが表示されます。 utilsmodule.c:1:20:致命的なエラー:Python.h:そのようなファイルまたはディレクトリのコンパイルは終了しませんでした。 私はインターネットで提案されたすべての解決策を試しましたが、問題はまだ存在しています。私は問題ありませんPython.h。私は自分のマシンでファイルを見つけることができました。
1193 python  gcc  python-c-api 

5
Cプリプロセッサが「linux」という単語を定数「1」と解釈するのはなぜですか。
GCCのCプリプロセッサが単語(小文字)を定数として解釈するのはなぜですか?linux1 test.c: #include <stdio.h> int main(void) { int linux = 5; return 0; } 結果$ gcc -E test.c(前処理段階の後で停止): .... int main(void) { int 1 = 5; return 0; } もちろんどちらがエラーになります。 (ところで:何もありません#define linuxでstdio.hのファイル。)
1022 c  linux  gcc  c-preprocessor 


2
正確に8192要素をループするとプログラムが遅くなるのはなぜですか?
これは問題のプログラムからの抜粋です。行列img[][]のサイズはSIZE×SIZEで、次のように初期化されます。 img[j][i] = 2 * j + i 次に、マトリックスを作成res[][]します。ここの各フィールドは、imgマトリックス内のその周囲の9つのフィールドの平均になります。簡単にするため、境界線は0のままにしておきます。 for(i=1;i<SIZE-1;i++) for(j=1;j<SIZE-1;j++) { res[j][i]=0; for(k=-1;k<2;k++) for(l=-1;l<2;l++) res[j][i] += img[j+l][i+k]; res[j][i] /= 9; } これでプログラムは終わりです。完全を期すために、これが以前のものです。後にコードはありません。ご覧のとおり、それは初期化です。 #define SIZE 8192 float img[SIZE][SIZE]; // input image float res[SIZE][SIZE]; //result of mean filter int i,j,k,l; for(i=0;i<SIZE;i++) for(j=0;j<SIZE;j++) img[j][i] = (2*j+i)%8196; 基本的に、このプログラムはSIZEが2048の倍数である場合、実行時間が長くなります。 SIZE = 8191: 3.44 secs …

28
プログラムがクラッシュしたときにスタックトレースを自動的に生成する方法
私はLinuxでGCCコンパイラーを使用しています。C ++プログラムがクラッシュしたときに、自動的にスタックトレースを生成します。 私のプログラムは多くの異なるユーザーによって実行されており、Linux、Windows、Macintoshでも実行されます(すべてのバージョンはを使用してコンパイルされますgcc)。 プログラムがクラッシュしたときにスタックトレースを生成できるようにしたいと思います。次にユーザーが実行すると、スタックトレースを私に送信して問題を追跡できるかどうか尋ねられます。情報の送信は処理できますが、トレース文字列を生成する方法がわかりません。何か案は?
590 c++  gcc  crash  stack-trace  assert 

11
「Xcode / iOSライセンスに同意するには、管理者権限が必要です。sudoを介してrootとして再実行してください。」GCCを使用する場合
Cプログラムをコンパイルしようとしているときに、次のコマンドを実行します。 gcc pthread.c -o pthread 戻り値: Xcode / iOSライセンスに同意するには、管理者権限が必要です。sudoを使用してrootとして再実行してください。 そして私のコードはコンパイルされません。 なぜこれが起こっているのですか?どうすればこの問題を修正できますか?
489 ios  xcode  gcc 

11
.soファイルにシンボルをリストする方法
.soファイルからエクスポートされるシンボルを一覧表示するにはどうすればよいですか?可能であれば、それらのソースも知りたいです(たとえば、静的ライブラリから取得した場合)。 違いがある場合は、gcc 4.0.2を使用しています。
486 c++  c  gcc  symbols  name-mangling 


6
速度ではなくサイズを最適化すると、GCCが15-20%速いコードを生成するのはなぜですか?
私が2009年に最初に気付いたのは、GCC(少なくとも私のプロジェクトと私のマシン上で)が、 -Os速度(-O2または-O3)ではなくサイズ()です。 私はなんとかこの驚くべき動作を示し、ここに投稿するのに十分なほど小さいコードを作成することに成功しました。 const int LOOP_BOUND = 200000000; __attribute__((noinline)) static int add(const int& x, const int& y) { return x + y; } __attribute__((noinline)) static int work(int xval, int yval) { int sum(0); for (int i=0; i<LOOP_BOUND; ++i) { int x(xval+sum); int y(yval+sum); int z = add(x, y); sum += …

6
GCC -fPICオプション
コード生成規約に関するGCCのオプションについて読みましたが、「位置に依存しないコード(PIC)を生成する」の機能を理解できませんでした。例を挙げて、どういう意味か説明してください。
436 c++  gcc  options  fpic 

5
CMakeでのデバッグとリリース
GCCコンパイル済みプロジェクトでは、 各ターゲットタイプ(デバッグ/リリース)に対してCMakeを実行するにはどうすればよいですか? CMakeを使用してデバッグとリリースのC / C ++フラグを指定するにはどうすればよいですか? メインの実行可能ファイルがコンパイルされg++、1つのネストされたライブラリがコンパイルされることをどのように表現しgccますか?
434 c++  c  gcc  cmake 

23
GCCで「非推奨の文字列定数から「char *」への変換」警告を取り除く方法は?
だから私は非常に大きなコードベースに取り組んでいて、最近この警告をトリガーするgcc 4.3にアップグレードしました: 警告:文字列定数から 'char *'への非推奨の変換 明らかに、これを修正する正しい方法は、次のようなすべての宣言を見つけることです char *s = "constant string"; または次のような関数呼び出し: void foo(char *s); foo("constant string"); そしてそれらをconst charポインタにします。ただし、これは少なくとも564個のファイルを操作することを意味し、現時点で実行したい作業ではありません。現在の問題は、私がで実行している-werrorため、これらの警告を抑制する方法が必要です。どうやってやるの?
409 c++  string  gcc 


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.