タグ

gccに関するBoBppのブックマーク (5)

  • gcc 4.0 の visibility support - pyopyopyo - Linuxとかプログラミングの覚え書き -

    gcc 4系での新機能に visibility support ってのがある.http://gcc.gnu.org/wiki/Visibility この"visibility" ってのは,シンボル名を公開するか非公開にするか,つまり外部から見えるか見えないかの属性のことみたい.具体的には,次のように使う. __attribute__ ((visibility("default"))) void global_function() __attribute__ ((visibility("hidden"))) void local_function()これにより 共有ライブラリのサイズを5〓20%ほど小さくできる. 共有ライブラリのロード時間を短くできる. などの効果が得られるとのこと. 5〓20%といえばかなりの割合である.手元のlinuxでは /usr/lib 以下の *.so だけで30

    gcc 4.0 の visibility support - pyopyopyo - Linuxとかプログラミングの覚え書き -
    BoBpp
    BoBpp 2016/06/17
  • C言語系/memos/gcc/舞台裏を知りたいときのヒント集メモ - Glamenv-Septzen(ぐらめぬ・ぜぷつぇん)(archive)

    作成日: 2010-11-21 17:13:08   /   last updated at: 2011-05-01 18:40:22 カテゴリ: C言語 [ Prev ] [ Next ] [ C言語系 ] gccコマンドの裏側を知りたいときのヒント集メモ。 使用環境: CentOS 5.x gcc-4.1.2-48.el5 libgcc-4.1.2-48.el5 cpp-4.1.2-48.el5 binutils-2.17.50.0.6-6.el5 binutils-devel-2.17.50.0.6-14.el5 サイト内の関連URL: C言語系/memos/gcc C言語系/memos/gcc/関数の属性機能("__attribute__") 参考書籍: Amazon.co.jp: Binary Hacks ―ハッカー秘伝のテクニック100選 : 高林 哲, 鵜飼 文敏, 佐藤

    BoBpp
    BoBpp 2015/10/16
    ヘッダファイルの依存関係を調べたい時には "-H" 勉強になった。
  • いやなブログ: Linux の共有ライブラリを作るとき PIC でコンパイルするのはなぜか

    Linux の共有ライブラリを作るとき PIC でコンパイルするのはなぜか 通常、Linux の共有ライブラリを作るときは各 .c ファイルを PIC (Position Independent Code) となるようコンパイルします。しかし、実は PIC でコンパイルしなくても共有ライブラリは作れます。それでは PIC にする意味はあるのでしょうか。 さっそく実験してみます。 int func () { printf(""); printf(""); printf(""); } PIC でコンパイルするには gcc に -fpic または -fPIC を渡します。-fpic の方が小さく高速なコードを生成する可能性がありますが、プロセッサによっては -fpic で生成できる GOT (Global Offset Table) のサイズに制限があります。一方、-fPIC はどのプロセッサで

    BoBpp
    BoBpp 2015/06/04
  • Shared Object 入門

    最近の gcc だとシンボル解決がうまくいかないといかないことがあったので、ちょっと調べました。 次のような 3つのソースファイルがあったとして、ダイナミックリンクで作ってみましょう。 `main.c` int foo(void); int main(void) { return foo() + 1; } `foo.c` int bar(void); int foo(void) { return bar() + 1; } `bar.c` int bar(void) { return 0; } shared object を作るのに必要なのは、コンパイル時に `-fPIC` オプションをつけることと、リンク時に `-shared` オプションをつけることの 2点です。 $ gcc -fPIC -c -o bar.o bar.c $ gcc -shared -o libbar.so bar.o

    BoBpp
    BoBpp 2015/06/04
    順番あるんだなぁ...
  • Xcode 4 でデフォルトになった LLVM って何?

    こんにちは。開発担当の金内です。 Xcode 4 は UI もすっかり変わりましたが、ビルドの要であるコンパイラもデフォルトが変更されています。その新しいコンパイラのキーワードが「LLVM」です。いまいち聞き慣れない方もいると思うので、今回はその LLVM について簡単にご紹介します。 ざっくりとした結論から言ってしまえば、Xcode における LLVM は従来のデフォルトコンパイラである GCC を置き換えるものです。LLVM には次のような特徴があります。 ・コンパイルが速い ・コンパイルされたコードが速い ・エラーメッセージがわかりやすい ・他のツールと連携しやすい いいことばかりですね。 しかし、コンパイラは要となる重要なコンポーネントなので、互換性などへの配慮から、Apple は GCC からの移行を少しずつ段階的に進めています。 実際、Xcode 4.0 でのデフォルトは完全に

    Xcode 4 でデフォルトになった LLVM って何?
  • 1