我正在尝试使用gcc 4.8.2
在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
非常感谢
答案 0 :(得分:1)
对于上面的代码,你根本没有glibc的依赖,所以最简单的方法是使用标志-nostdlib
进行编译:
$ gcc -fPIC -shared reload.c -o reload.so -nostdlib
$ ldd reload.so
statically linked