#include<stdio.h>
void shared_call()
{
printf("fun call \r\n");
}
#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
编译时会出现此错误?
答案 0 :(得分:2)
您需要一个静态库来进行静态链接,预期名称为libdemo.a
。像这样:
gcc -c -o demo.o demo.c
ar rcs libdemo.a demo.o