对定制共享库的未定义引用

我用下面的代码创build了一个.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 

尝试:

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

(注意第一行的改变 – 第二行不变)

这是什么输出?

  nm outscreen.so | grep outlib1 

也许它是用一个下划线出口。