使用-static编译C程序时找不到共享库

时间:2011-12-16 12:40:05

标签: c shared-libraries

demo.c

#include<stdio.h>

void shared_call()
{

 printf("fun call \r\n"); 

}  

demo_main.c

#include<stdio.h>
int main()
{

   shared_call()

}
gcc -shared -fpic -o libdemo.so demo.c

gcc demo_main.c -L. -ldemo

这个编译正确,但是当我尝试这个时:

gcc -static  demo_main.c -L. -ldemo

它给了我以下错误:

/usr/bin/ld: cannot find -ldemo
collect2: ld returned 1 exit status

为什么在使用-static编译时会出现此错误?

1 个答案:

答案 0 :(得分:2)

您需要一个静态库来进行静态链接,预期名称为libdemo.a。像这样:

gcc -c -o demo.o demo.c
ar rcs libdemo.a demo.o
相关问题