2013-02-14 9 views
106

Linuxの動的ライブラリ(.soファイル)用のhello worldプロジェクトを作成しようとしています。私は、コマンドラインからのgccを使用して、hello()をエクスポートする.soファイルを作成するにはどうすればよいgccコマンドラインを使用して.cファイルから.soファイルをビルドする

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

:だから私は、ファイルのhello.cを持っていますか?

答えて

190

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

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

これは、オブジェクト・ファイル(.o)は、今あなたがそれを取るを生成し、.soのファイルを作成します。コメントから提案::

gcc hello.o -shared -o libhello.so 

EDIT

あなたを使用することができます

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

ワンステップでそれを行うには。 - Jonathan Leffler

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

+1

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

+33

また、 'gcc -shared -o libhello.so -fPIC hello.c'を実行すると、1ステップで実行できます。 –

+4

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

関連する問題