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

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

11
負の数のモジュロ演算
Cプログラムで私は以下の操作を試みました(動作を確認するだけです) x = 5 % (-3); y = (-5) % (3); z = (-5) % (-3); printf("%d ,%d ,%d", x, y, z); (2, -2 , -2)gccのように出力しました。毎回良い結果を期待していた。係数は負にできますか?誰かがこの動作を説明できますか?
190 c  gcc  modulo 


3
GCCがほぼ同じCコードに対して、このように根本的に異なるアセンブリを生成するのはなぜですか?
最適化されたftol関数を書いているとき、私はいくつかの非常に奇妙な動作を見つけましたGCC 4.6.1。最初にコードを示します(明確にするために、違いを示しました)。 fast_trunc_one、C: int fast_trunc_one(int i) { int mantissa, exponent, sign, r; mantissa = (i & 0x07fffff) | 0x800000; exponent = 150 - ((i >> 23) & 0xff); sign = i & 0x80000000; if (exponent < 0) { r = mantissa << -exponent; /* diff */ } else { r …

1
すべてのgcc警告を無効にする
私は特定の種類のコンパイラエラーメッセージを読み取り、それらを使用して有用な処理を行うプロジェクトに取り組んでいます。これをテストしているサンプルコードベース(ランダムオープンソースアプリケーション)のため、頻繁に再構築しますが、警告を生成するいくつかのビットが含まれていますが、これは私には関係ありません。 GCCからのすべての警告を無効にして、エラーメッセージがある場合にそれを表示するにはどうすればよいですか?
184 gcc  g++  warnings 

2
C99の「restrict」キーワードの現実的な使用法
私はいくつかのドキュメントと質問/回答を閲覧していて、それが言及されているのを見ました。私は簡単な説明を読み、基本的にはポインターが他の場所を指すために使用されないことがプログラマーからの約束であると述べました。 誰かが実際にこれを使用する価値があるいくつかの現実的なケースを提供できますか?
183 c  gcc  c99  restrict-qualifier 

5
ビルドターゲットの外でgccデバッグシンボルを生成する方法は?
-gオプションを使用してデバッグシンボルを生成できることを知っています。ただし、シンボルはターゲットファイルに埋め込まれます。gccは結果の実行可能ファイル/ライブラリの外部でデバッグシンボルを生成できますか?Windowsの.pdbファイルと同じように、VC ++コンパイラーが行いました。
176 gcc  debugging  pdb-files 

6
Linux開発プロジェクトのClangとGCC
私は大学にいます。プロジェクトではCを使用しています。GCCとClangを調査してきましたが、ClangはGCCよりもはるかにユーザーフレンドリーであるようです。結果として、LinuxのCおよびC ++で開発するために、GCCではなくclangを使用することの利点または欠点は何ですか? 私の場合、これは制作ではなく、学生レベルのプログラムに使用されます。 Clangを使用する場合、GDBでデバッグしてGNU Makeを使用する必要がありますか、それとも別のデバッガーとmakeユーティリティを使用する必要がありますか?
175 c++  c  linux  gcc  clang 

8
errnoはスレッドセーフですか?
ではerrno.h、この変数が宣言されているextern int errno;ので、私の質問は、errnoいくつかの呼び出しの後に値をチェックするか、マルチスレッドコードでperror()を使用しても安全ですか?これはスレッドセーフ変数ですか?そうでない場合、代替案は何ですか? 私はLinuxをx86アーキテクチャのgccで使用しています。
175 c  linux  multithreading  gcc 

11
“ / usr / bin / ld:cannot find -lz”
Ubuntu 10.04でAndroidソースコードをコンパイルしようとしています。私は言ってエラーが出ます、 / usr / bin / ld:-lzが見つかりません どうすれば修正できますか?どういうcannot find -lz意味ですか?ここに完全なエラーメッセージがあります: external/qemu/Makefile.android:1101: warning: overriding commands for target `external/qemu/android/avd/hw-config-defs.h' external/qemu/Makefile.android:933: warning: ignoring old commands for target `external/qemu/android/avd/hw-config-defs.h' host SharedLib: libneo_cgi (out/host/linux-x86/obj/lib/libneo_cgi.so) /usr/bin/ld: skipping incompatible /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../libz.so when searching for -lz /usr/bin/ld: skipping incompatible /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../libz.a when searching for -lz /usr/bin/ld: skipping incompatible /usr/lib/libz.so …
172 linux  gcc  linker 

4
GCC 5.4.0での高価なジャンプ
私は次のような関数を持っています(重要な部分のみを示しています): double CompareShifted(const std::vector<uint16_t>& l, const std::vector<uint16_t> &curr, int shift, int shiftY) { ... for(std::size_t i=std::max(0,-shift);i<max;i++) { if ((curr[i] < 479) && (l[i + shift] < 479)) { nontopOverlap++; } ... } ... } このように書かれた場合、関数は私のマシンで最大34msかかりました。条件をブール乗算に変更した後(コードは次のようになります): double CompareShifted(const std::vector<uint16_t>& l, const std::vector<uint16_t> &curr, int shift, int shiftY) { ... for(std::size_t i=std::max(0,-shift);i<max;i++) …
171 c++  gcc 

11
単一のホスト上の複数のglibcライブラリ
単一のホスト上の複数のglibcライブラリ 私のLinux(SLES-8)サーバーには現在glibc-2.2.5-235がありますが、このバージョンでは動作せず、glibc-2.3.3が必要なプログラムがあります。 同じホストに複数のglibcs​​をインストールすることは可能ですか? これは、古いglibcでプログラムを実行すると発生するエラーです。 ./myapp: /lib/i686/libc.so.6: version `GLIBC_2.3' not found (required by ./myapp) ./myapp: /lib/i686/libpthread.so.0: version `GLIBC_2.3.2' not found (required by ./myapp) ./myapp: /lib/i686/libc.so.6: version `GLIBC_2.3' not found (required by ./libxerces-c.so.27) ./myapp: /lib/ld-linux.so.2: version `GLIBC_2.3' not found (required by ./libstdc++.so.6) ./myapp: /lib/i686/libc.so.6: version `GLIBC_2.3' not found (required by ./libstdc++.so.6) そこで、newglibcという新しいディレクトリを作成し、次のファイルをコピーしました。 …
171 linux  gcc  glibc 

11
Nachosソースコードのコンパイル中のエラー「gnu / stubs-32.h:No such file or directory」
ラップトップにナチョスをインストールしようとしていますが、ラップトップにUbuntu 11.04をインストールしています。 コードはCで記述されているため、ビルドするにはクロスコンパイラが必要だと思います。これが私の問題です。コマンドを使用してMIPSクロスコンパイラのソースコードをダウンロードしました wget http://mll.csie.ntu.edu.tw/course/os_f08/assignment/mips-decstation.linux-xgcc.gz そして私はそれを使って解凍しました tar zxvf mips-decstation.linux-xgcc.gz これは問題ありませんが、nachos osのソースコードをビルドしようとすると、makeを使用してこのエラーが発生します- /usr/include/gnu/stubs.h:7:27: fatal error: gnu/stubs-32.h: No such file or directory compilation terminated. make: *** [bitmap.o] Error 1 私はここで与えられた指示に従うようにしています-http://mll.csie.ntu.edu.tw/course/os_f08/217.htmそして、私がmakeを使おうとするときを除いて、すべてがうまく機能しています。

7
ldは既存のライブラリを見つけることができません
このDebian lennyシステムでアプリケーションをg ++とリンクしようとしています。ldは、指定されたライブラリーを見つけられないと不平を言っています。ここでの具体的な例はImageMagickですが、他のいくつかのライブラリでも同様の問題が発生しています。 私はリンカーを次のように呼び出しています: g++ -w (..lots of .o files/include directories/etc..) \ -L/usr/lib -lmagic ldは文句を言う: /usr/bin/ld: cannot find -lmagic ただし、libmagicは存在します。 $ locate libmagic.so /usr/lib/libmagic.so.1 /usr/lib/libmagic.so.1.0.0 $ ls -all /usr/lib/libmagic.so.1* lrwxrwxrwx 1 root root 17 2008-12-01 03:52 /usr/lib/libmagic.so.1 -> libmagic.so.1.0.0 -rwxrwxrwx 1 root root 84664 2008-09-09 00:05 /usr/lib/libmagic.so.1.0.0 $ ldd /usr/lib/libmagic.so.1.0.0 …

5
どのフラグ-march = nativeがアクティブになるかを確認するにはどうすればよいですか?
GCC 4.3を使用してC ++アプリをコンパイルしています。私が使用している最適化フラグを手動で選択する代わりに-march=native、理論上は、コンパイルしているハードウェアに適用可能なすべての最適化フラグを追加する必要があります。しかし、どのフラグを実際に使用しているかを確認するにはどうすればよいですか?

4
警告:組み込み関数 'xyz'の互換性のない暗黙の宣言
いくつかのバイナリをコンパイルすると、次のような警告が表示されます。 warning: incompatible implicit declaration of built-in function ‘strcpy’ warning: incompatible implicit declaration of built-in function ‘strlen’ warning: incompatible implicit declaration of built-in function ‘exit’ これを解決するために、私は追加しました #include <stdlib.h> この警告に関連付けられているCファイルの上部、および次のフラグを使用してコンパイルします。 CFLAGS = -fno-builtin-exit -fno-builtin-strcat -fno-builtin-strncat -fno-builtin-strcpy -fno-builtin-strlen -fno-builtin-calloc 私はGCC 4.1.2を使用しています: $ gcc --version gcc (GCC) 4.1.2 20080704 これらの警告を解決するにはどうすればよいですか?
164 c  gcc  gcc-warning 

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