交叉开发--------1.3动态库与静态库

目录

前言:库文件:动态库和静态库

1.动态库(又叫做共享库)

    a.先制作一个动态库

        1.先编写库函数的源代码

        2.把你写的库函数(模块)的源代码编译成为动态库

    b.在写一个其他的源代码调用这个库文件

      1.      找不到你描述fin_max.h那一个头文件""引起来的头文件先在当前目录查找,找不到就去标准路径找

        2. 编译器找不到函数的实现(定义)函数find_max的实现在libfind_max.so这个库里面,但是编译器不知道       

                        3. 上面仅仅是指定了库的名字,编译器在标准路径(/usr/lib:/lib)下面找不到名字叫做libfind_max.so的库文件

        4.编译成功之后,运行使用了库函数的程序

    总结:

2.静态库

    a.先制作一个静态库

        1.先编写库函数的源代码

        2.把你写的库函数(模块)的源代码编译成为静态库

    b.在写一个其他的源代码调用这个库文件

3.总结 


前言:库文件:动态库和静态库


    二进制的仓库(一个已经实现好的,可以直接调用的功能模块)

    库是一种二进制的封装形式,其他的源代码可以直接调用库中已经实现的函数模块或者其他功能模块,但是又看不到他的源代码

    库这种方式有利于模块化,以及代码重用,而且只要接口设计合理,改变库的实现方式,不影响使用库的源代码的

    如:
        printf()/scanf()/strlen()  只需要使用即可,不需要知道它是如何实现的

    库是如何来的呢?
    源代码(一般没有主函数)------>编译------->二进制文件(01)


1.动态库(又叫做共享库)


    动态库的使用步骤:


    a.先制作一个动态库


        1.先编写库函数的源代码


            xxx.c       库文件的功能实现
            xxx.h       函数以及数据类型的声明(接口文件)

        2.把你写的库函数(模块)的源代码编译成为动态库


            把功能源代码变成一种谁都可以调用的二进制形式

            gcc  -shared  -fpic         -o      libxxx.so  xxx.c xxx.c 


        编译器名称  共享库  与位置无关的  output  生成的库的名字  源文件列表

            libxxx.so   你指定的生成的库的名字,必须以lib开头,以.so结尾
        
            xxx.c xxx.c  你生成库文件的源文件列表,可以有多个,以空格隔开
            如:
            把find_max这个功能制作为一个动态库文件
            gcc -shared -fpic -o libfind_max.so find_max.c
            生成了一个库文件
            file libfind_max.so  查看库文件的详细信息
            就可以把库文件(libfind_max.so)和头文件(find_max.h)拷贝给其他人使用了

    b.在写一个其他的源代码调用这个库文件


        在其他源代码中直接包含接口文件,就可以直接使用库中的函数
        如:当前源代码存在的结构如下    
            inc/    存放一些外部引用的头文件
            lib/    存放一些外部引用的库文件
            src/    当前项目的源文件
            change_log.txt   修改和更新的记录日志信息
            readme.txt      注意事项和说明

        编译自己源代码的时候,可能会遇到一些如下的错误:

      1.      找不到你描述fin_max.h那一个头文件""引起来的头文件先在当前目录查找,找不到就去标准路径找
            gcc main.c -o main
            main.c:2:10: fatal error: find_max.h: 没有那个文件或目录
            #include "find_max.h" 

            解决方法:
                1.把自己的头文件放到当前目录下面或者放到标准路径下面(不建议)

                2.手动指定头文件的查找路径
                    -I  Include 
                    -I后面接一个目录名,指定当前编译时,头文件的查找路径

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值