ライブラリやリンクについて調べているのですが、題名の通り静的リンクによる共有ライブラリの作成はできないのでしょうか?
下記の通り、動的リンクによる共有ライブラリの生成は普通にできます。
$ gcc -shared -fPIC -o libshared.so shared-library.c $ ldd libshared.so linux-vdso.so.1 => (0x00007ffcba269000) libc.so.6 => /lib64/libc.so.6 (0x00007f47939eb000) /lib64/ld-linux-x86-64.so.2 (0x0000003049800000)
ただ、静的リンクによる共有ライブラリの作成を単純に-static
オプションをつけてやろうとしてもできませんでした。
$ gcc -shared -fPIC -o libshared.so shared-library.c -static /usr/bin/ld: /usr/lib/gcc/x86_64-redhat-linux/4.4.7/crtbeginT.o: relocation R_X86_64_32 against `__DTOR_END__' can not be used when making a shared object; recompile with -fPIC /usr/lib/gcc/x86_64-redhat-linux/4.4.7/crtbeginT.o: could not read symbols: Bad value collect2: ld returned 1 exit status