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


162

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

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

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

回答:


291

共有ライブラリを生成するには、最初に-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

ワンステップでそれを行うには。– ジョナサンレフラー

-Wallすべての警告-gを取得してデバッグ情報を取得するには、gccコマンドに追加することもお勧めします。– バジル・スタリンケビッチ


1
最初にgcc -c -fPIC blabla.c -o blabla.oを実行してから、上記のコマンドを実行する必要があります。
dreamcrash 2013

57
またはgcc -shared -o libhello.so -fPIC hello.c、1つのステップでそれを実行します。
ジョナサンレフラー2013

5
-Wallすべての警告-gを取得してデバッグ情報を取得するには、gccコマンドに追加することもお勧めします。
バジル・スタリンケビッチ2013

推奨事項をありがとう、私はそれらを答えに追加しました
ドリームクラッシュ

3
@sashoalm .oファイルは、基本的に、ソースファイルを一緒にリンクする前の最終的な実行可能ファイルへのオブジェクトファイルです。したがって、実行gcc -o abc.c abc.oするとオブジェクトファイルが生成されます。Ans次に、このabc.oファイルを使用してファイルを作成でき.soます。非常に多くのファイルを作成するために必要なのは、.cファイルに書き込まれた正しいcコードだけです。PS:コメントであなたの疑念をクリアするためだけに。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.