我用下面的代码创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
也许它是用一个下划线出口。