zoukankan      html  css  js  c++  java
  • 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,验证执行文件是否可以正常运行

  • 相关阅读:
    VS项目如何运用svn的忽略列表
    Hyper-V如何应用新的网卡
    android:Layout_weight的深刻理解
    使用WebView出现web page not available
    如何在android模拟器中导入搜狗输入法?
    ASP.Net生成静态HTML页
    微软URLRewriter.dll的url重写的简单使用(实现伪静态)
    servlet中获得tomcat项目根目录的绝对路径
    Log4j使用指南
    处理URL传递中文乱码问题
  • 原文地址:https://www.cnblogs.com/chengliangsheng/p/3602266.html
Copyright © 2011-2022 走看看