gcc 动态库 和静态库

转载 2015年11月18日 18:15:43
 
今天要用到静态库和动态库,于是写了几个例子来巩固一下基础。
hello1.c ————————————————————
#include <stdio.h>
void print1(int i) { int j; for(j=0;j<i;j++) { printf("%d * %d = %d\n",j,j,j*j); }    }
hello2.c _________________________________________________
#include <stdio.h>
void print2(char *arr) { char c; int i=0; while((c=arr[i++])!='\0') { printf("%d****%c\n",i,c); } }
hello.c ____________________________________________________
void print1(int); void print2(char *);
int main(int argc,char **argv) { int i=100; char *arr="THIS IS LAYMU'S HOME!"; print1(i); print2(arr);
return 0; }

可以看到hello.c要用到hello1.c中的print1函数和hello2.c中的print2函数。所以可以把这两个函数组合为库,以供更多的程序作为组件来调用。

方法一:将hello1.c和hello2.c编译成静态链接库.a
[root@localhost main5]#gcc -c hello1.c hello2.c   
  //将hello1.c和hello2.c分别编译为hello1.o和hello2.o,其中-c选项意为只编译不链接。
[root@localhost main5]#ar -r libhello.a hello1.o hello2.o   
//将hello1.o和hello2.o组合为libhello.a这个静态链接库
[root@localhost main5]#cp libhello.a /usr/lib     
//将libhello.a拷贝到/usr/lib目录下,作为一个系统共享的静态链接库
[root@localhost main5]#gcc -o hello hello.c -lhello  
//将hello.c编译为可执行程序hello,这个过程用到了-lhello选项,这个选项告诉gcc编译器到/usr/lib目录下去找libhello.a的静态链接库
以上的过程类似于windows下的lib静态链接库的编译及调用过程。
方法二:将hello1.o和hello2.o组合成动态链接库.so
[root@localhost main5]#gcc -c -fpic hello1.c hello2.c   
 //将hello1.c和hello2.c编译成hello1.o和hello2.o,-c意为只编译不链接,-fpic意为位置独立代码,指示编译程序生成的代码要适合共享库的内容这样的代码能够根据载入内存的位置计算内部地址。
[root@localhost main5]#gcc -shared hello1.o hello2.o -o hello.so 
  //将hello1.o和hello2.o组合为shared object,即动态链接库
[root@localhost main5]#cp hello.so /usr/lib  
  //将hello.so拷贝到/usr/lib目录下
[root@localhost main5]#gcc -o hello hello.c hello.so  
//将hello.c编译链接为hello的可执行程序,这个过程用到了动态链接库hello.so

gcc编译静态库和动态库

gcc编译静态库和动态库 今天要用到静态库和动态库,于是写了几个例子来巩固一下基础。 hello1.c ———————————————————— #include void p...

gcc静态库与动态库生成

  • 2015年01月09日 03:12
  • 8KB
  • 下载

GCC_生成静态库和动态库.pdf

  • 2012年05月26日 22:33
  • 12KB
  • 下载

linux下使用gcc生成静态库和动态库及其使用

本文将将介绍如何在linux下使用gcc生成静态库和动态库,以及如何使用库。 一、简单说明 库是二进制可执行代码,可以被操作系统载入内存执行。linux下的库有2种:静态库和动态库,它们的区别在于代码...

gcc生成静态库和动态库

  • 2009年07月30日 09:59
  • 99KB
  • 下载

gcc生成静态库和动态库

  • 2012年03月30日 10:40
  • 30KB
  • 下载

Linux下gcc生成和使用静态库和动态库详解

Linux下gcc生成和使用静态库和动态库详解(原文链接) 本文在原文的基础上做一些详细验证,部分稍有改动, 一、基本概念 1.1什么是库 1.2库的种类 1.3库存在的意义 1.4库文件是如何...

Linux下gcc编译器生成和使用静态库和动态库

     上次课我们学习了gcc编译器和动态库静态库的建立方法。下面是我找的关于动态和静态库的建立的方法。 Linux下gcc编译器生成和使用静态库和动态库 我们通常把一些公用函数制作成...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:gcc 动态库 和静态库
举报原因:
原因补充:

(最多只允许输入30个字)