Не удается найти разделяемую библиотеку при компиляции программы на C с параметром -static - PullRequest
0 голосов
/ 16 декабря 2011

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 Ответ

2 голосов
/ 16 декабря 2011

Вам нужна библиотека static для статического связывания с ожидаемым именем libdemo.a. Сделай так:

gcc -c -o demo.o demo.c
ar rcs libdemo.a demo.o
...