タグ

gccに関するsnsn9panのブックマーク (4)

  • Linux共有ライブラリの簡単なまとめ - wagavulinの日記

    Linuxで共有ライブラリ(*.so)を作るようになったのでちょっと勉強してみた。今までは使うだけだったので、以下のようなことは知っていた。作るときはgccの-sharedオプションを使う。使うときはgccの"-lライブラリ名"でリンクするライブラリを指定する。リンク時のライブラリ探索パスは-Lオプションで指定する。実行時のライブラリ探索パスは/etc/ld.so.confに書いてあるディレクトリ。環境変数LD_LIBRARY_PATHでも指定可能。ライブラリを作るときは、.cから.oを作るときに-fPICをつけるといいらしい。新しくライブラリを入れたときはldconfigするといいらしい。逆に今まであまり知らなかったこと。ほとんどのライブラリはlibhoge.so, libhoge.so.1, libhoge.so.1.1のように3つくらいのファイルがあり、libhoge.soやlibh

  • gccにおけるatomic操作命令の個別関数

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

  • 革命の日々! シーケンスロック その5 volatileがダメな理由

    どもども。またまた間隔があいてしまいましたがシーケンスロックな話しの続きです。 前回の記事で坩堝さんから面白い指摘をうけたので今回は予定を変更してvolatileの話をしたいと思います。 retをvolatileにするだけではうまくいかないんですよね? どういう風になるんだろ. なるほど、たしかに世のC言語の参考書を見るとvolatileはある種の最適化を妨げる効果を持つと されています。 これだけ見ると、volatileとつけるだけすべての最適化が無効になってうまく動きそうですね。 しかし、その理屈は微妙におかしいのである 多くの人が「ある種の」という言葉を拡大解釈しているがvolatileは来スレッド同期に使えるようなシロモノではないのである。 つづきは、続きを読むからご覧ください。 あと、お願い。 今回の話は前提知識がいろいろとあるので、末尾のご参考にあげたURLを読んでから 読ん

    snsn9pan
    snsn9pan 2009/10/22
    volatileの理解促進に
  • makeの動作gccとg++と暗黙のルール。 - 動物と暮らそう

    cをずーっと書いていて、c++に移行した再のmakeで罠ったので、書き留めておく。 簡潔、明瞭、寛大に書くと、 GNU makeは.oをコンパイルする際に、ソースファイルが.cの場合はgccが、.cppの場合はg++が、暗黙のルールでコンパイラとして選ばれる。 gccが暗黙のルールとして呼び出された場合、$(CFLAGS)が付属してコンパイルされる。 g++が暗黙のルールとして呼び出された場合、$(CPPFLAGS)が付属としてコンパイルされる。 ということを理解、認知、納得、勉強できたということなのなのです! もっと詳しくは、 GNU make 日語訳(Coop編) - 暗黙ルールの利用 に猛々しく、歴々と、漫然にして、明瞭に書かれている。 以下は、僕がいかにダメかということの証明が書かれています。 コンパイルが通らないって話。 #include "stdio.h" #include

    makeの動作gccとg++と暗黙のルール。 - 動物と暮らそう
    snsn9pan
    snsn9pan 2007/08/31
    この~、makeが、何回やっても通らない。
  • 1