2017-06-23 1 views
1

私はGCC 4.8.2共有ライブラリを構築するにはどうしたらよいですか?Linuxでは静的glibcを使用しますか?

共有ライブラリのコードを使用してCentOSの上で共有ライブラリを作成しようとしています:

//reload.c 
int func(int num){ 
    return num++; 
} 

リンクコマンド:

gcc -fPIC -shared reload.c -o reload.so 

使用lddコマンド:

linux-vdso.so.1 => (0x00007ffe6aa93000) 
libc.so.6 => /usr/lib64/libc.so.6 (0x00007f27feb97000) 
/lib64/ld-linux-x86-64.so.2 (0x00007f27ff169000) 

今、静的にglibcをリンクしたいと思いますか?それのような

ldd xxx.so 
    not a dynamic executable 

私は、ビルドオプションを試してみましたが、エラーが発生しました。

gcc -fPIC -shared reload.c -o reload.so -Wl,-Bstatic -lc 
/usr/bin/ld: cannot find -lgcc_s 
/usr/bin/ld: cannot find -lgcc_s 
collect2: error: ld returned 1 exit status 

あなたは上記のコードのためにすべてのglibcする依存関係を持っていないので、最も簡単な方法は、フラグ-nostdlibでコンパイルすることです非常に

+0

ます。https:/ /stackoverflow.com/questions/26277283/gcc-linking-libc-static-and-some-other-library-dynamically-revisited – Gaurav

答えて

0

をありがとう:

$ gcc -fPIC -shared reload.c -o reload.so -nostdlib 
$ ldd reload.so 
statically linked 
+0

良い、ありがとう! –

関連する問題