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
でコンパイルすることです非常に
ます。https:/ /stackoverflow.com/questions/26277283/gcc-linking-libc-static-and-some-other-library-dynamically-revisited – Gaurav