本文根据http://topic.csdn.net/u/20091026/10/0e913e37-e4a2-4504-bcc7-61af18a22dde.html?6487的回复总结而成。

 

1. 共享库

 

通常做成共享库的话,在编绎时加上-shared参数,并把链接生成的文件名命名libxxx.so,可以放在/usr/lib下 

其他程序引用这个库时,在链接的时候加上-lxxx就可以了。

 

编辑好代码以后,编译时采用类似下面的命令可生成"共享库"(假如源文件是myfun.c): 
gcc -shared -fPIC -Wmyfun.c -0 libmy.so 
解释: -shared 生成共享库; 
      -fIPC 表示“位置无关代码”(Position Independent Code),可不加; 
      -W 表示输出警告信息,可不加; 
      库文件的命名要按照libxxxx.so的格式; 

要引用这个库时: 
      gcc xxx.c -0 xxx.out -lmy 
    -l 表示设定要连接的库(libmy.so,输my便可) 

 

2. 静态库 

文件名:lib.c 
先编译成目标文件 gcc -o mylib.o -c lib.c 
然后创建静态库,将mylib.o放到libmylib.a中 ar rcs libmylib.a mylib.o 
最后copy到库目录下/usr/lib  cp libmylib.a /usr/lib/libmylib.a 

在编写的时候直接调用其中的函数就是了,只不过在编译的时候要加入-l选项后面跟上库名 
如 gcc -o test test.c -lmylib  //mylib是前面创建的库的名称 

3. 动态库

创建就是 gcc -fPIC -share -o mylib.so lib.c 
调用也分两种方法 
一种方法是 gcc -o test test.c ./libmylib.so (注意这里跟的是动态库的路径 )
第二种方法是使用动态库的函数 你man dlopen看下那几个函数看下就知道了就不多说了

Logo

更多推荐