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

GCCはGNUコンパイラコレクションです。これはLinux上の事実上の標準Cコンパイラであり、他の多くの言語やプラットフォームもサポートしています。

5
非常に基本的なコンパイラの書き方
gccコードをコンパイルしたような高度なコンパイラは、コードが記述された言語(C、C ++など)に従って機械可読ファイルにコンパイルします。実際、それらは対応する言語のライブラリと機能に従って各コードの意味を解釈します。私が間違っている場合は修正してください。 非常に基本的なコンパイラ(おそらくCで)を記述して静的ファイル(テキストファイルのHello Worldなど)をコンパイルすることにより、コンパイラをよりよく理解したいと思います。私はいくつかのチュートリアルと本を試しましたが、それらはすべて実用的なケースです。対応する言語に関連付けられた意味を持つ動的コードのコンパイルを扱います。 静的テキストを機械可読ファイルに変換する基本的なコンパイラーを作成するにはどうすればよいですか? 次のステップは、変数をコンパイラーに導入することです。言語の一部の機能のみをコンパイルするコンパイラを作成したいと想像してください。 実用的なチュートリアルとリソースをご紹介いただければ幸いです:-)
214 c  compiler  compilation  gcc 

9
コンパイラエラーの用語集がないために不満な初心者プログラマ
私の家族の友人が、プログラミング(C言語)を学ぶときに少し助けを求めました。私たちが話していたとき、彼はコンパイラー(GCC)がエラーを起こしたときに彼に与えるエラーメッセージを理解するのに苦労していることにフラストレーションを表明しました。彼は、使用されているすべての用語を理解していません。また、それらの組み合わせが理解できない場合もあります。「コンパイラのドキュメントに、エラーメッセージの詳細な説明が含まれていないのはなぜですか?」-そして、私は彼に良い答えがありませんでした。 私自身-より経験豊富なプログラマーとして-この状況ではめったにありませんが、これらのまれな出来事は起こります-私が以前に遭遇したことのないいくつかのエキゾチックなエラーメッセージ。私は検索エンジンでエラーメッセージを探すことで何とかやっていくことができますが、どうやらそれは彼のために常に機能するとは限りません-特に彼が遭遇するエラーはより一般的であり、彼が彼に関連するトラブルを抱えている複数の異なるケースで発生するため自分の。 それでは、初心者プログラマはコンパイラエラーメッセージを理解するという課題にどのように取り組むべきでしょうか?具体的には、CとGCCの組み合わせで?

3
GCCはWindowsでスレッドサポートなしで死にますか?[閉まっている]
意見が必要です。GCCは常に非常に優れたコンパイラーでしたが、最近では「魅力」を失いつつあります。私は、Windows GCCにはstd::threadサポートがなく、Windowsユーザーが別のコンパイラーを使用することを強いられていることがわかりました。なぜなら、最もエキサイティングな機能がまだ欠けているからです。 しかし、WindowsでGCCがまだスレッドをサポートしていないのはなぜですか?ライセンスの問題?ABIの非互換性 (まあ、マルチスレッドを使用するクロスプラットフォームライブラリが既にいくつかあります:boost、POCO、SDL、wxwidgetsなど。GCCリリースを出荷する代わりに、既存のMIT / libpngライセンスのコードをこのホールに合うように使用するのは簡単ではないでしょうかスレッドのサポートなし?) 最近、コンパイラの比較を見ると、GCCは他のコンパイラに比べてC ++ 11の機能を最も幅広くサポートしていますが、Windowsではアトミック、ミューテックス、スレッドがまだないため、これは真実ではありません。 このトピックについてもっと知りたいのですが、私が見つけることができる唯一のことは、次の理由で助けを求める人々です: 「スレッド」はstd名前空間に存在しません GCC / TDM-GCCのチケットトラッキングとメールディスカッションを見ると、2009年からスレッドサポートのリクエストがありました。本当に何が起こっているのですか?

4
GCC vs clang / LLVM —それぞれの長所と短所[非公開]
現在のところ、この質問はQ&A形式には適していません。回答は、事実、参考文献、または専門知識によってサポートされると予想されますが、この質問は、議論、議論、世論調査、または広範な議論を求める可能性があります。この質問を改善し、場合によっては再開できると思われる場合は、ヘルプセンターをご覧ください。 6年前に閉鎖されました。 GCC対clang / LLVMの長所と短所は何ですか?
20 compiler  clang  gcc  llvm 

4
g ++で-pedanticフラグを使用するかどうか
私はC ++を学んでおり、練習にはLinuxでg ++を使用しています。 プログラマーとして働いている人がg ++ -pedanticフラグを使用しているかどうか、また実世界でのその重要性を知りたいです。 他のコンパイラについてはどうですか、これも可能ですか?これは事実上の標準になりましたか? 配列定義の次元として非const式を使用することは違法であると著者が指摘しているC ++ Primerを読んでいるので興味があります。g++ではデフォルトで許可されています。そして、私が知らない他のことがあるかもしれません。
16 c++  gcc 

2
glibcがGCCとは別に維持されるのはなぜですか?
GCCはCコンパイラです。GlibcはCライブラリです。しかし、コンパイラーとC実装として一緒にバンドルされた標準ライブラリーは絶対に必要ではないでしょうか? 例えば、CライブラリのようなABIおよびコンパイラの特定のものが含まれ<limits.h>、<stdint.h>、、などをどのコンパイラとAPIの間で異なります。また、「メイン関数を呼び出す方法」などの詳細もコンパイラに依存しますが、実際にはそれらの詳細はlibc.soLinuxシステムで提供されます。たとえば、int8バイトを使用するなど、別のABIで動作するようにコンパイラを変更すると、Cライブラリは機能しなくなり<limits.h>ます。
13 c  gcc 

2
GCCはC ++自体で記述されているため、鶏と卵の問題はありませんか?
4.8リリース以降、C ++コンパイラGCC(そのG ++部分)は、CではなくC ++自体で記述されています。これについて架空の質問があります。 まだC ++コンパイラがない新しいプラットフォームでGCCのC ++コードをコンパイルする方法を知りたいです。もちろん、他のマシンでコンパイルされたビルド済みのバイナリを使用することもできます。または、Cで書かれた古いバージョンのGCCを使用して、現在のバージョンをコンパイルすることもできます。 しかし、ビルド済みのバイナリがなく、最新バージョンがないと、行き詰まっていましたよね?そうでない場合、GCCプロジェクトのCからC ++への切り替えによって引き起こされるこの状況に他の影響がありますか?
10 c++  compiler  gcc 

5
ライブラリとしてgccを使用する方法はありますか?
誰でも次のように機能するソリューションを知っています。 #include <stdio.h> #include <gcc.h> /* This .h is what I'm looking for. */ int main (void) { /* variables declaration (...) */ /* The following line is supposed to be equivalent to: * $ gcc main.c -o main */ results = gcc_compile_and_link("main.c", "main"); /* Now I want to use …
10 c++  c  gcc 

1
GCCがデフォルトでAT&T構文を使用するのはなぜですか?
タイトルはそれをすべて言うと思います:) GCCがAT&T / GAS構文を使用する特別な実用的な理由はありますか? 注:これは単なるデフォルトであり、切り替えることができます 注2:個人的には「インテルの構文」の方がずっと読みやすいと思うので、驚いたのはこのためです。
9 history  assembly  gcc 

2
Cが同じ変数の複数のグローバル宣言を許可し、複数のローカル宣言を許可しないのはなぜですか?
グローバル変数を複数回宣言すると、コンパイラは警告を出力しません。 ただし、たとえば関数内でローカル変数を複数回宣言すると、gccコンパイラーはエラーを出力し、ファイルをコンパイルしません。(私はgccに関して質問しますが、これはより一般的な言語設計の質問であり、gccについての質問ではありません。他のコンパイラーが同様に動作する可能性があるためです)。 この動作の説明は何ですか?

2
gccでビルドするプロジェクトの個人コード分析にClangを使用するのは賢明ですか?
を使用してビルドしているいくつかのCプロジェクトに取り組み始めましたgcc。この選択はいくつかの理由で行われたと思います: アームの非常に早い段階でクロスコンパイルする必要がありました(私はそう思います)。 パフォーマンスは、何よりも重要なスペックです。 gcc 以前も今も簡単な最初の選択です。 私はその選択に異議を唱える理由はなく、とにかくそうする立場にはありません。 単一のプロジェクトのコードベースは比較的小さいです。すべてのプロジェクトは比較的クリーンなMakefile(現在更新中)でビルドされ、gcc -Wall -Wextraほとんど文句を言わず、最小限のテストが行​​われます。自動化された静的分析やコードのフォーマットは行われておらず、コードは構文的に一貫性がありませんが、非常に読みやすく、考え抜かれています。 コードのすべての行を一度に再フォーマットしたくないので、この回答の周りのどこかで説明されているように(特にコンテキストが実際にはそれほど悪くないため)行うつもりです:リファクタリングし、主に、トピックを扱うときはできるだけ再フォーマットしますただし、コードスタイルを意識しないでトピックを取り上げます。残念ながら、私はコードスタイルやコミットの追加チェックを課す立場にはありませんが、ファイルを変更するときは既存のコード規則を尊重する必要があるという同僚の感覚があるように感じます(ただし、現在の状態はわかっていますが)コードの魔法のようなことが起こりませんでした)、そして良いコードを書きたいという欲求。 これは、このような心構えでCでプログラミングするのが初めてであり、さまざまなコード分析ツールと書式設定ツールに非常に惹かれていclangます。 したがって、私の質問の要点は次のとおりです。それclangを使用clangしてビルドしているときに、ヒントに従ってフォーマットおよび分析ツールを使用すると問題が発生する可能性がありますgccか?たとえば、一部の警告は、内部表現gccが使用しないか、バイトコードclangが生成しgccないものから発生する可能性があります。 警告ヒントが意味をなすように、gccコンパイルパラメータ(主にターゲットアーキテクチャと最適化レベル)を自動的に渡す良い方法はありclangますか? 私が精通していることgccとそのエラー報告を追加します。私は、より適切な言葉でわかりやすい警告だけでなく、より多くの(関連する)警告とエラーを取得することに関心があります。したがって、1 日の終わりclangに構築するために、その内部表現に基づいて生成できる追加のヒントを信頼できない場合、私はこれを行うことにあまりgcc興味がありません。 私は多くのコンテキストを含めたので、どんな発言をしても、私が持ち出せなかった根本的な質問に気軽に答えてください。

2
Cでのライブラリのリンクに関する質問
LinuxでGCCコンパイラを使用してC(まだ初心者)を学んでいます。math.hヘッダーで使用されるライブラリなど、一部のライブラリを含める場合は、手動でリンクする必要があることに気付きました。上記の数学ライブラリ-l[library-name]など、さまざまな形式のフラグを使用してライブラリをリンクしてい-lmます。 ただし、コマンドラインからおよび/または切り替えた後GeanyにCode::Blocks、私は気づいCode::Blocks用途は、g++プログラムをコンパイルする代わりに、gcc私は(プロジェクトが間違いなくCとして指定されているにもかかわらず)に慣れていること。また、Code::Blocksそのような数学ライブラリなどのライブラリ-手動でコンパイルする際にリンクするライブラリを必要としないだけで仕事を。 2つの質問があります。 まず、g++コンパイラでCプログラムをコンパイルするのは「悪い」のでしょうか。これまでのところそれは動作するようですが、結局のところ、C ++はCではなく、g++コンパイラーがC ++用であることを確信しています。 次に、g++ライブラリの自動リンクを実行しているのはコンパイラCode::Blocksですか?
8 c  libraries  gcc  linking 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.