用GCC创建函数库:
假设用户函数为myfun.c,要生成libmy.so,则使用:
gcc -shared -fPIC -Wmyfun.c -o libmy.so
有关参数含义:
-shared-------编译产生共享库
-fPIC---------在编译产生共享库时作一些优化,可以不加
-W------------输出警告信息,可以不加
-o------------设定输出文件名(库名)
使用刚才生成的库libmy.so,使用下面的命令:
gcc myfun1.c -o myfun1 -lmy
-l 表示要连接的库。
库的存放路径:一般共享库都存放在/lib。/usr/lib目录下可以找到。有一些库可以在/etc/ld.so.conf
配置文件中有这些目录的列表。GCC在默认的情况下,将只在/etc/ld.so.conf中指定的目录下寻找库。
例:
产生库的代码(fun1.c)
#include<stdio.h>
void ptr(char *str)
{
printf("%s\n",str);
}
命令:
gcc -shared -fPIC -W myfun.c -o libmy.so
并将libmy.so拷贝到/lib下
要引用这个库的程序(fun2.c)
extern void ptr(char *)
int main(int argc,char *argv[])
{
ptr("Ilove you,china");
}
命令:
gcc fun2.c -o fun2 -lmy
执行:./fun2后输出I love you,china。