未定义的自定义共享库引用

时间:2011-12-07 15:42:51

标签: c linux gcc shared-libraries

我使用下面的代码创建一个.so文件,但是当我编译一个使用GCC调用.so文件中的函数的文件时,我得到一个“对'outlib1'的未定义引用”错误。

我的代码或命令出了什么问题?感谢。

OS 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 个答案:

答案 0 :(得分:6)

尝试:

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

(注意第一行的变化 - 第二行没有变化)

答案 1 :(得分:0)

这是什么输出?

 nm outscreen.so | grep outlib1

也许是用下划线导出。