静态库所要用的源文件
文件 fred.c
 
#include <stdio.h>
 
void fred(int argc)
{
    printf("void fred(int argc) | argc is [%d]\n", argc);
}
 
文件 bill.c
 
#include <stdio.h>
 
void bill(char * argv)
{
    printf("void bill(char * argv) | argv is [%s]\n", argv);
}
 
编译库文件所需要的目标文件
gcc -c bill.c -o bill.o
gcc -c fred.c -o fred.o
 
上述命令中的 -c 只是对源程序进行编译。而不是去进行链接。
 
将目标文件进行打包
ar cvr libMylib.a bill.o fred.o
 
编写一个调用库文件的源文件
 
头文件 myLib.h
 
void fred(int argc);
void bill(char * argv);
 
main 函数文件 staticLibTest.c
 
#include <myLib.h>
#include <stdlib.h>
 
int main (int argc, char ** argv)
{
    fred(argc);
    bill(argv[0]);
 
    exit(0);
}
 
编译 staticLibTest.c,得到目标文件 staticLibTest.o。使用的命令如下:
gcc -c staticLibTest.c
 
最后一步,将staticLibTest.o 和使用的“第三方”的库文件进行链接,得到可执行程序.
gcc -o staticLibTest staticLibTest.o -L. -lMylib
命令说明:-L. 表示程序使用的第三方库所在的路径。-lMylib表示其使用的第三方库文件的名称。名称的获取方式为去掉文件名的前三个字符lib,去掉后面的.a这样的后缀名。
或者
gcc -o staticLibTest1 staticLibTest.o libMylib.a 
 
程序运行结果
./staticLibTest
void fred(int argc) | argc is [1]
void bill(char * argv) | argv is [./staticLibTest]

linux下的制作静态库并使用它的更多相关文章

  1. 使用CMake在Linux下编译tinyxml静态库

    环境:CentOS6.6+tinyxml_2_6_21.下载并解压tinyxml_2_6_2.zip unzip tinyxml_2_6_2.zip 2.在tinyxml文件夹里创建一个CMakeLi ...

  2. Linux下制作静态库 & 动态库

    静态库 1.将.c生成.o文件 gcc-cadd.c-o add.o 2.使用ar工具制作静态库 ar rcs lib库名.a add.o sub.o div.o 3.编译静态库到可执行文件中 gcc ...

  3. Linux库函数制作(静态库、动态库)

    Linux库函数制作(静态库.动态库) 静态库与动态库 链接方式 链接分为两种:静态链接.动态链接 静态链接: 由链接器在链接时将库的内容加入到可执行程序中 静态链接的特点是: 优点: 对运行环境的依 ...

  4. linux中C的静态库和动态库分析

    从开始学C语言写第一个"hello world"历程到现在,我依然困惑于到底这个程序完整的执行流程是什么样的.不过,现在我正在尝试一点一点的揭开它的面纱.现在,我尝试分析linux ...

  5. 制作静态库文件(.a文件)

    制作静态库文件(.a文件) 1.创建静态库工程: 在Xcode中new一个新的project,选择IOS下面的Framework&Library,下面有一个Cocoa Touch Static ...

  6. iOS:Xcode7下创建 .a静态库 和 .framework静态库

    Xcode7 中创建静态库:.a 和 .framework 一.简单介绍 1.什么是库? 库是程序代码的集合,是共享程序代码的一种方式 2.库的分类 根据源代码的公开情况,库可以分为2种类型 (1)开 ...

  7. 在Linux下使用MinGW静态交叉编译带有zlib的libcurl(包括交叉编译openssl,即--cross-compile-prefix=i686-w64-mingw32- mingw)

    在Linux下使用MinGW静态交叉编译带有zlib的libcurl libcurl是一个跨平台的.易用的.强大的网络库.在大部分Linux发行版中都有编译好的二进制包可供使用,Mac系统更是将其作为 ...

  8. 【转】Linux编译链接问题----静态库和动态库

    Linux静态库和动态库的命名规则 静态函数库 静态库的名字一般是libxxx.a,利用静态库编译生成的文件比较大,因为整个静态库所有的数据都会被整合进目标代码中. a) 优点: 编译后,可执行文件不 ...

  9. linux下编译安装boost库

    linux下编译安装boost库 linux下编译安装boost库 1.下载并解压boost 1.58 源代码 下载 解压 2.运行bootstrap.sh 3.使用b2进行构建 构建成功的提示 4. ...

随机推荐

  1. 软件工作考核项(zcl)——

    注意:这里没有对代码风格做要求,因为要代码走查! 考核项 考核标准 分数等级   需求规格说明书编写 主要用例图缺失 -1   主要软件界面设计图缺失 -1   主要功能清单项目缺失 -1   主要复 ...

  2. selenium之坑:点击后页面刷新重新获取刷新前的页面(StaleElementReferenceException:Message:Element not found in the cache...)

    循环点击一列链接,但只能点到第一个,第二个失败,这是为什么,因为第二个已经是新页面,当然找不到之前页面的元素,虽然元素没变,甚至是后退回来,页面都没有变,为什么是新页面,页面长的一样不代表是同一张页面 ...

  3. SpringMVC:学习笔记(3)——REST

    SpringMVC:学习笔记(3)——REST 了解REST风格 按照传统的开发方式,我们在实现CURD操作时,会写多个映射路径,比如对一本书的操作,我们会写多个URL,可能如下 web/delete ...

  4. 【转】通过fio工具,测试SATA,SAS,SSD 读写性能

      转自:http://blog.csdn.net/killmice/article/details/42745937

  5. 自己动手编译Android源码(超详细)

    http://www.jianshu.com/p/367f0886e62b 在Android Studio代码调试一文中,简单的介绍了代码调试的一些技巧.现在我们来谈谈android源码编译的一些事. ...

  6. linux环境vim升级到vim74

    作为编辑器之神,vim7.4已经发布近两个月了.从vim7.3到vim7.4,时隔两年之久,做了多项改正和性能提升,作为Linux Geeksters的你,怎能错过. 由于各大主流linux操作系统都 ...

  7. linux下安装jsp开发运行环境(centos7)

    1 开发环境包括 1)apache-tomcat 2)java-jdk 3)mysql 2 apache-tomcat安装(应该先装java再装tomcat) 1)到官网下载最新版本(不建议用yum安 ...

  8. MIPI DBI\DPI\DSI简介【转】

    本文转载自:http://blog.csdn.net/longxiaowu/article/details/24249971 (1)DBI接口 A,也就是通常所讲的MCU借口,俗称80 system接 ...

  9. springmvc异常处理(非注解与注解)

    1.异常 程序中的异常一般分为两类:预期异常,运行时异常.前者是我们可预知的,我们一般通过捕获和抛出方式处理这些异常.后者主要通过代码规范.测试等手段来减少异常的发生.一般,我们在系统的DAO.Ser ...

  10. jsp中的basePath和path(绝对路径 相对路径)

    在JSP中的如果使用 "相对路径" 则有 可能会出现问题. 因为 网页中的 "相对路径" , 他是相对于 "URL请求的地址" 去寻找资源. ...