zoukankan      html  css  js  c++  java
  • Linux 第一个静态库 (两种方法)

    方法1

    ---------------------------------------------

    Linux下 静态库 一般为.a为扩展名 类似  lib***.a   的文件名。利用静态函数库编译成的文件比较大,因为整个 函数库的所有数据都会被整合进目标代码中,他的优点就显而易见了,即编译后的执行程序不需要外部的函数库支持,因为所有使用的函数都已经被编译进去了。当然这也会成为他的缺点,因为如果静态函数库改变了,那么你的程序必须重新编译。

     
    -----------func.h----------- 
     
    #include <stdio.h>
    void ShowHello();
     
    ----------func.c-----------
     
    #include "func.h"
    void ShowHello()
    {
        printf("show hello func called ");
    }
     
    gcc -c func.c  生成 func.o 目标文件
     
    ar -rc libTest1.a func.o       生成静态库 libTest1.a   (文件名必须以lib开头)
     
     
    -------uselib.c-----------------
     
    #include "func.h"
     
    int main()
    {
        ShowHello();
        return 0;
    }
     
    gcc -c uselib.c  编译生成 uselib.o  目标文件
     
    最后执行  gcc -o uselib   -L/mnt/hgfs/LinuxShare/cplus/TestLib1  uselib.o -lTest1  生成目标文件 uselib
    -L参数后为静态库所在路径       -l参数后为 去掉 lib和 .a 的静态库名称
    ./uselib   执行结果为 show hello func called
    ————————————————
    版权声明:本文为CSDN博主「mtour」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/mtour/article/details/8274193

    方法2

    ------------------------------------------------------------------------------------------

    linux下静态库的制作

       在我们编写软件的过程当中,少不了需要使用别人的库函数。因为大家知道,软件是一个协作的工程。作为个人来讲,你不可能一个人完成所有的工作。另外,网络上一些优秀的开源库已经被业内广泛接受,我们也没有必要把时间浪费在这些重复的工作上面。

        既然说到了库函数,那么一般来说库函数分为两种方式:静态库和动态库。两者的区别其实很小,静态库是必须要链接到执行文件中去的,而动态库是不需要链接到最后的执行文件中的。怎么理解呢?也就是说,对于最后的执行文件而言,你是否删除静态库无所谓。但是,一旦你删除了动态库,最后的执行文件就玩不转了。

        今天我们讨论的问题是静态库。为了显示windows和linux创建静态库之间的差别,我们首先在windows上面利用Visual C++6.0创建一个静态库。源文件的代码很简单,

    #include "test.h"  
      
    int add(int a, int b)  
    {  
        return a + b;  
    }  

        头文件代码也不难

    #ifndef _TEST_H  
    #define _TEST_H  
      
    int add(int a, int b);  
    #endif

        如果你需要在windows上面创建一个静态库,那么你需要进行下面的操作,

    (1)打开visual C++ 6.0工具,单击【File】-> 【New】->【Projects】
    (2)选择【Win32 Static Library】,同时在【Project Name】写上项目名称,在【Location】选择项目保存地址
    (3)单击【Ok】,继续单击【Finish】,再单击【Ok】,这样一个静态库工程就创建好了
    (4)重新单击【File】->【New】->【Files】,选择【C++ Source Files】,
    (5)选中【Add to pproject】,将源文件加入到刚才创建的工程中去,在File中输入文件名+.c后缀
    (6)重复4、5的操作,加入一个文件名+.h头文件
    (7)分别在头文件和源文件中输入上面的代码,单击F7按钮,即可在Debug目录中生成*.lib静态库文件

        那么,在linux下面应该怎么运行呢?其实很简单,两条命令解决,
    (1)首先生成*.o文件,输入gcc -c test.c -o test.o
    (2)利用ar命令生成静态库,输入ar rc libtest.a test.o

        此时如果还有一个hello.c文件使用到了这个静态库,比如说 :

    复制代码
    #include <stdio.h>  
    #include "test.h"  
      
    int main()  
    {  
        printf("%d
    ", add(2, 3));  
        return 0;  
    }  
     
    复制代码

        其实也很简单,输入一个简单的命令就可以生成执行文件了,
    (1)首先输入gcc hello.c -o hello ./libtest.a

    (2)输入./hello,验证生成的执行文件是否正确

    (3)朋友们可以删除libtest.a文件,重新输入./hello,验证执行文件是否可以正常运行

  • 相关阅读:
    iOSIPV6简单测试环境搭建
    SQL存儲過程的調試方法
    Excel的 OleDb 连接串的格式
    RequiredFieldValidator的使用
    GridView導出Excel
    咳嗽對症下藥
    WCF基礎
    WCF配置文件全攻略
    WCF寄宿方式
    WCF綁定
  • 原文地址:https://www.cnblogs.com/bruce1992/p/14454966.html
Copyright © 2011-2022 走看看