いつも忘れてしまうので個人的メモ 静的ライブラリっていうのは 要はただのオブジェクトファイル(*.o)の集合です Linuxならファイル名が*.aのものは静的ライブラリで、*.so.*のものは動的ライブラリです(Windowsの場合は*.dll) オブジェクトファイルの作り方 例えばhoge1.cとhoge2.cというソースがあったら % gcc hoge1.c hoge2.c -c でhoge1.oとhoge2.oが作成されます arコマンドを使って1つにまとめる ライブラリを作りたいとき % ar r libHoge.a hoge1.o hoge2.o これでlibHoge.aが作成されます! ライブラリの中身を見たいとき % ar t libHoge.a とすると hoge1.o hoge2.o と表示される ライブラリに追加したいとき 例えばさらにhoge3.oというオブジェクトフ
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 はどのプロセッサで
Libraries employ a software design also known as "shared components" or "archive libraries", which groups together multiple compiled object code files into a single file known as a library. Typically C functions/C++ classes and methods which can be shared by more than one application are broken out of the application's source code, compiled and bundled into a library. The C standard libraries and
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く