web-dev-qa-db-ja.com

gccコマンドラインを使用して.cファイルから.soファイルをビルドする

Linuxダイナミックライブラリ(.soファイル)のHello Worldプロジェクトを作成しようとしています。だから私はファイルhello.cを持っています:

#include <stdio.h>
void hello()
{
    printf("Hello world!\n");
}

コマンドラインからgccを使用して、hello()をエクスポートする.soファイルを作成するにはどうすればよいですか?

132
sashoalm

共有ライブラリを生成するには、最初に-fPIC(位置独立コード)フラグを使用してCコードをコンパイルする必要があります。

gcc -c -fPIC hello.c -o hello.o

これにより、オブジェクトファイル(.o)が生成されます。これを取得して、.soファイルを作成します。

gcc hello.o -shared -o libhello.so

編集:コメントからの提案:

使用できます

gcc -shared -o libhello.so -fPIC hello.c

ワンステップでそれを行います。 – ジョナサンレフラー

gccコマンドに-Wallを追加してすべての警告を取得し、-gを追加してデバッグ情報を取得することもお勧めします。 – Basile Starynkevitch

232
dreamcrash