タグ

gccとsoに関するsudoemacsのブックマーク (3)

  • Linux共有ライブラリの簡単なまとめ - wagavulin's blog

    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

    Linux共有ライブラリの簡単なまとめ - wagavulin's blog
  • 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

  • いやなブログ: 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 はどのプロセッサで

  • 1