Неопределенная ссылка на пользовательскую общую библиотеку - PullRequest
3 голосов
/ 07 декабря 2011

Я создаю файл .so с кодом ниже, но когда я компилирую файл, который вызывает функции в файле .so с GCC, я получаю ошибку "неопределенная ссылка на 'outlib1'".

Что не так с моим кодом или моей командой? Спасибо.

ОС Ubuntu 11.10
gcc 4.6.1

//file name outscreen.c

#include <stdio.h>

void outlib1(void)
{
    printf("out screen func1\n");
}
//file name main.c
int main(int argc, char* argv[])
{
    outlib1();
}
gcc outscreen.c -fPIC -shared -o outscreen.so   
gcc main.c -L. -loutscreen -o call   
./call

Ответы [ 2 ]

6 голосов
/ 07 декабря 2011

Попробуйте:

$ gcc outscreen.c -fPIC -shared -o liboutscreen.so   
$ gcc main.c -L. -loutscreen -o call   

(обратите внимание на изменение в первой строке - вторая строка не изменяется)

0 голосов
/ 07 декабря 2011

Какой вывод у этого?

 nm outscreen.so | grep outlib1

Возможно, он экспортируется с подчеркиванием.

...