静态、动态库的创建使用与makefile配置文件的编写

来源:互联网 发布:淘宝新店铺怎样排前 编辑:程序博客网 时间:2024/06/07 07:22


静态库的创建

gcc  -c  源文件.c  //产生目标文件

ar  rcs  静态库名(lib··.a) 目标文件1  目标文件2  ····

  rs:静态库不存在,就创建该文件;

  S:更新库文件;

静态库的使用

 gcc  -o  file  file.c  -L.  -lname

 file:名字   file.c:主函数   name:静态库名中的名字

 

ar  -t  libname.a   列出库中有哪些库文件

ar  -d  libname.a  add.o   把指定文件add.o删除

ar  -dv  libname.a  add.o   能给出出错提示

ar  -xv)  libname.a  文件   从指令库中把文件提取出来(复制文件)

 

例:add():int add (int a,int b)

            {

            return a+b;

            }

    sub():int sub (int a,int b)

        {

        return a-b;

        }

mul():int mul (int a,int b)

        {

        return a*b;

        }

div():int div(int a,int b)

       {

           return a/b;

       }

main():#include <stdio.h>

 

        int main(void)

        {

            int a,b;

        scanf("%d %d",&a,&b);

        printf("add a and b is %d.\n",add(a,b));

            printf("sub a and b is %d.\n",sub(a,b));

            printf("mul a and b is %d.\n",mul(a,b));

            printf("div a and b is %d.\n",div(a,b));

            return 0;

        }

gcc  -c  add.c  sub.c  div.c  mul.c

生成 add.o  sub.o  div.o  mul.o

ar  rcs  libmain.a  add.o  sub.o  div.o  mul.o

生成 libmain.a文件

gcc  -o  four  main.c  -L.  -lmain

生成 four最终可执行的文件

 

 

 

动态库的创建

gcc  -shared  -fPIC  -o  库名.so  源文件.c

动态库的使用

gcc  源文件.c ./库名.So  -o  可执行文件名

 

例:上面程序

gcc  -shared  -fPIC  -o  libmain.so  add.c  sub.c  div.c  mul.c

生成 libmain.so文件

gcc  main.c  ./libmain.so  -o  main

生成可执行文件 main

 

 

工程管理器make

makefile配置文件的编写规则

①需要由make工具创建的目标体,目标文件或可执行文件;

②创建的目标体所依赖的文件;

③创建每个目标体时运行的命令,所有命令以制表符(tab键)开始;

makfile格式

targetdependency_files

<tab>command

 

例:上面程序

①终端中输入vim  makefile编写makefile文件

法一:

main:add.o  sub.o  mul.o  div.o  main.o

        gcc  -o  main  add.o  sub.o  mul.o  div.o  main.o

add.o:add.c

        Gcc  -c  add.c

sub.o:sub.c

        gcc  -c  sub.c

mul.o:mul.c

        gcc  -c  mul.c

div.o:div.c

        gcc  -c  div.c

main.o:main.c

        gcc  -c  main.c

法二:

main:add.c  sub.c  mul.c  div.c  main.c

        gcc  -o  main  add.c  sub.c  mul.c  div.c  main.c

②保存退出后,直接打make执行

 

 

伪命令:

.PHONY: clean         //伪指令的声明

clean

rm-f  hello  main.o  func1  func2  ···

 

例:

Install

mkdir  ./tmp

mv  *.o  ./tmp

mv  main  ./tmp

创建一个目录tmp,将生成的.o 文件放入tmp目录中,然后将可执行文件也放入tmp目录中。

0 0
原创粉丝点击