タグ

gccに関するkenichiiceのブックマーク (16)

  • gccの-rdynamic option 調査メモ - Qiita

    はじめに gccの-rdynamic optionの調査メモ。 gcc 9.1.0, glibc 2.29を対象に調査した。 基内容に差はないと思うが、target archはx86_64-pc-linux-gnu。 TL;DR -rdynamicオプションはリンク時のみ効果がある。 -rdynamicオプションを適用すると、共有ライブラリから実行ファイルのシンボル情報を動的に取得できるので、バックトレースの表示などに使われる。 -rdynamicオプションを適用することで、共有ライブラリとして利用可能な実行ファイルを作成できる。 -rdynamicオプションを適用するとシンボルバッティングや意図せず共有ライブラリに制御されてしまうリスクが増えるので、明確に目的がないなら通常は無効にしておく。 gcc,glibcのソースコードは面白い。 gccのspecファイルむずい。 公式ドキュメント

    gccの-rdynamic option 調査メモ - Qiita
  • Preprocessor Output (The C Preprocessor)

    9 Preprocessor Output ¶ When the C preprocessor is used with the C, C++, or Objective-C compilers, it is integrated into the compiler and communicates a stream of binary tokens directly to the compiler’s parser. However, it can also be used in the more conventional standalone mode, where it produces textual output. The output from the C preprocessor looks much like the input, except that all prepr

    kenichiice
    kenichiice 2018/03/13
    GCCのプリプロセッサの出力フォーマットの説明。「linemarkers」の仕様とか。
  • Useful GCC warning options not enabled by -Wall -Wextra

    Note: This blog post was written for GCC 7. Later versions of the compiler may have added some of these warnings to -Wall or -Wextra. GCC can warn about questionable constructs in the source code, but most such warnings are not enabled by default – developers need to use the options -Wall and -Wextra to get all generally useful warnings. There are many additional warning options that are not enabl

  • Makeでヘッダファイルの依存関係に対応する - wagavulin's blog

    CやC++で書かれたプログラムをMakeを使ってビルドする、というのはUnix/Linuxではよく行われていることだが、ちゃんとしたMakefileを書くのは意外と難しい。 例えば以下の3つのファイルからなるプログラムを考える。 foo.h: 関数fooの宣言がある。 foo.c: 関数fooの実装がある。 main.c: 関数fooを呼び出す。 /* foo.h */ void foo(int a); /* foo.c */ #include "foo.h" #include <stdio.h> void foo(int a){ printf("%d\n", a); } /* main.c */ #include "foo.h" int main(int argc, char **argv){ foo(10); return 0; } Makefileは例えば以下のように書ける。 PRO

    Makeでヘッダファイルの依存関係に対応する - wagavulin's blog
  • 2016年、C言語はどう書くべきか (前編) | POSTD

    (訳注:2016/3/2、いただいた翻訳フィードバックをもとに記事を修正いたしました。) (訳注:著者のMattより、「文中で明言はしていないが、この記事の内容はx86-64 Unix/Linux/POSIXでアプリケーションをプログラミングする場合にフォーカスしている。他のプログラミング領域では、対象とするシステムに応じた(例: 8-bitの組み込みシステム、10年前のコンパイラ、多くの異なるCPUアーキテクチャで動く必要のあるアプリケーション、Win/Linuxでのビルド互換性など)特有のアドバイスが必要」との補足を頂いております。) 以下の文章は2015年の始めに書いたドラフトで、今まで公開していませんでした。私のドラフト用フォルダの中で誰の目も引かなかったため、大部分が書いた時のままです。公開するにあたり、単純に2015年を2016年に変更しました。 必要な修正、改善、苦情があり

    2016年、C言語はどう書くべきか (前編) | POSTD
  • 革命の日々! a.out からコンパイラバージョンを取得する方法

    忘れないうちにメモ Linuxで普通に実行ファイルつくると.commentセクションとデバッグインフォメーションの 二箇所にコンパイラのバージョンが入ってる。これはobjdumpやreadelfで観測できる。 なぜこんなテクニックを知る必要があるかというとバグ報告で嘘のコンパイラバージョンを 報告してくる輩はけしてレアではないからである 1つめ。.comment セクションを objdumpで表示 % objdump -s -j .comment a.out a.out: file format elf64-x86-64 Contents of section .comment: 0000 4743433a 2028474e 55292034 2e342e36 GCC: (GNU) 4.4.6 0010 20323031 32303330 35202852 65642048 2012030

    革命の日々! a.out からコンパイラバージョンを取得する方法
    kenichiice
    kenichiice 2013/11/27
    「objdump -s -j .comment a.out」
  • [ruby-dev:41273] Re: [ruby-cvs:34935] Ruby:r27723 (trunk): * ext/psych/parser.c (parse): Return strings encoded as

    kenichiice
    kenichiice 2010/05/11
    「gcc -pedantic」
  • gccにおけるatomic操作命令の個別関数

     gccとVC x86/x64環境で開発する上で, gccとVCはどちらも非常に優れたC/C++コンパイラです. ただLinuxWindowsのどちらの環境でも動作するようなC/C++コードを書くためには, gccとVC, およびそれらが動作するOSの違いが問題になることがあります. ここではそれらの違いについてまとめていきたいと思います. なお説明を簡単にするためにマクロを多用していますが実際には可能なら別の手段をとるか, 名前がぶつからないような命名規則に則ったマクロ名をつけることをお薦めします. 対象 定義済みマクロ 有用なマクロ コンパイルオプション 演算子の代替表現の抑制 日語のコメント 型 pragma attributeとdeclspec ファイル入出力 テキストとバイナリ 巨大なファイル static変数の初期化 snprintf 例外ハンドラ intrinsic関数

  • gdb豆知識(続き) 2008-09-27 - 未来のいつか/hyoshiokの日記

    gdb豆知識(d:id:hyoshiok:20080926#p1)の続き。 Windowsの開発環境は知らないのだけど、噂によると素敵なIDE(統合開発環境)が整備されていて、マウスでぐりぐり、ヘルプも充実、簡単簡単らしい。それから比べると、GNU Emacs+gcc+gdbというのは微妙にレトロ感あふれる。とは言うもののデバッグのプロセスはIDE的マルチウィンドウ、GUIでグリグリであろうとなかろうと基は変らないので、よしとしよう。 コンパイル時のオプション gccの-gオプションを付ける。Makefileのコンパイルオプションは通常CFLAGSなのでCFLAGS=-gとしておく。最適化オプション(-O)と同時に付けることができるので(素晴しい)、最適化オプションも適当に付けておく。 時々、デバッグオプション(-g)を付けるときは最適化オプションをつけない、あるいは-O0(アルファベッ

    gdb豆知識(続き) 2008-09-27 - 未来のいつか/hyoshiokの日記
    kenichiice
    kenichiice 2008/10/04
    「時々、デバッグオプション(-g)を付けるときは最適化オプションをつけない、あるいは-O0(アルファベットのオーにゼロ)をするというような都市伝説のようなものがあるが、わたしは意味がないと思う。」
  • [ruby-dev:34827] Re: -Wall

  • sourCEntral

    Centos 4 Section: 0p11p233p45678Language: csdeenfrhuiditjaplptpt_BRrusksvCentos 5 Section: 0p11p233p456789lnLanguage: bgcsdadeelenesfifrhrhuiditjakonlplptpt_BRroruskslsvtrukzh_CNzh_TWCentos 6 Section: 0p11p233p3t456789lnLanguage: bgcacsdadeeleneoesetfifrglhrhuiditjajpkonbnlnnplptpt_BRpt_PTroruskslsrsvtrukzhzh_CNzh_TWCentos 7 Section: 0p11p233p3t456789nLanguage: cacsdadeeleneoesetfifrglhrhuiditjako

    kenichiice
    kenichiice 2008/04/14
    −fexec−charset
  • Wataru's memo(2008-03-11) : プログラマの教養は manual pages に宿る (その6)

    ● [Thoughts] プログラマの教養は manual pages に宿る (その6) 6回目にして、いよいよ stdio.h の登場です。stdio は STanDard Input/Output の略であり、標準入出力関数のプロトタイプ宣言, 関連するマクロや構造体の定義などを収めています。 printf 関数宣言 stdio.h ヘッダーファイルを利用する前に、man 3 printf で printf ライブラリ関数の説明を見ておきましょう(セクション3を指定しない場合、セクション1の printf コマンドが表示されるので注意)。 PRINTF(3) Linux Programmer’s Manual PRINTF(3) NAME printf, fprintf, sprintf, snprintf, vprintf, vfprintf, vsprintf, vsnprint

  • freeml(フリーエムエル)|新しい生活をはじめる羅針盤

    住まい 住宅ローン 引越し 暮らし 電気・ガス インターネット ウォーターサーバー 将来に備える 不動産投資 学資保険 投資信託 積立NISA ライフスタイル お酒 グルメ ビューティー アウトドア freeml(フリーエムエル)は、「時代と生活の変化」に対し、「free & meaningful life」のコンセプトのもと、 「新しい生活をはじめる羅針盤」となるような情報メディアを目指しております。「住む場所を探し」「生活インフラを整え」「将来の準備をする」… 生活の中には多くの選択肢が存在し、ひとつひとつの選択の積み重ねによって、よりfree(開放的)でmeaningful(有意義)な生活が形成されていきます。専門家の方々のご協力を交えた当サービスの情報が、届いた方の「よりお得な」「より自分にあった」「より納得のいく」選択に繋がればと願っております。

    freeml(フリーエムエル)|新しい生活をはじめる羅針盤
  • IBM Developer

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    IBM Developer
  • IBM Developer

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    IBM Developer
  • 知っていると便利な gcc のオプション

    back GNU gcc を使う際に知っていると便利なオプションを挙げておきます。 注意: これが全部ではありません。gcc には、ほかにも プロセッサ依存の細かいオプションが山のようにありますが、それらは ふつうあまり利用しないので省略しました。 一般的なオプション -c, -o, -I, -g, -O, -L, -l 省略。それくらい知ってること。ちなみに -L と -l は ld へのオプションであり、順番が重要である。 -pipe 各ステージ間で情報のやりとりをするのに temporary file を使わず、 pipe を使うようにする。このオプションが Makefile などに 含まれているときは、たいてい除いたほうがよい。なぜなら、 多くのシステムでは、アセンブラ側がパイプに対応してないから。 言語仕様に関するオプション -ansi 厳格な ANSI 仕様でコンパイルする。こ

  • 1