文件:tobigchar.c   mian.c   tobigchar.h

//tobigchar.c
char tos()
{
char ch;
ch = getchar();
if(ch >= 'a' && ch <= 'z')
ch = ch - 32;
else if(ch >= 'A' && ch <= 'Z')
ch = ch + 32;
return ch;
}
//main.c
#include<stdio.h>
#include"tobigchar.h"
int main()
{
printf("%c\n",tos());
}
//tobigchar.h
#ifndef _H_
#define _H_
int tos();
#endif

  

静态库:

生成目标文件:

gcc -c -o tobigchar.o tobigchar.c

生成静态库:

ar rcs libtobigchar.a tobigchar.o

编译程序:

gcc -I./ -L./ main.c -ltobigchar

运行程序:

./a.out

动态库:

生成目标文件:

gcc -c -fpic -o tobigchar.o tobigchar.c

生产动态库:

gcc -shared -o libtobigchar.so tobigchar.o

编译程序:

gcc -I./ -L./ main.c -ltobigchar

设置动态库环境变量:

export LD_LIBRARY_PATH=/mnt/hgfs/Linux/Linuxshare/20190119/code:$LD_LIBRARY_PATH       //pwd打印出当前文件的绝对路径

运行程序:

./a.out

为什么要做库?

  在做项目的时候,一般都不是一个人可以完成的,需要团队合作,每个人的分工不一样,做底层函数的成员提供一个库,为上层应用提供函数接口就行。

makefile脚本:静态库

CFLAGS=-Wall -O3
OBJS= main.o libtobigchar.a
main:$(OBJS)
@$(CC) $(CFLAGS) -I./ -L./ $< -o $@ -ltobigchar
libtobigchar.a:tobigchar.o
@$(AR) rcs $@ $<
%.o : %.c
@$(CC) -c $< -o $@
clean:
@$(RM) a.out *.o *.a *.so

makefile脚本:动态库

OBJS=main.o libtobigchar.so
main:$(OBJS)
$(CC) -I./ -L./ $< -o $@ -ltobigchar
libtobigchar.so:tobigchar.o
$(CC) -shared -o $@ $<
%.o:%.c
$(CC) -c -fpic $< -o $@
clean:
$(RM) *.o *.so *.a a.out

Linux静态库与动态库制作过程的更多相关文章

  1. linux系统环境下的静态库和动态库的制作

    linux系统下的应用编程需要系统提供的库文件,包括静态库或动态库.不管是静态库还是动态库,都是编译好的二进制文件.在我们编译程序时要链接的目标文件,静态库是链接的时候直接编译到程序里,和程序成为一体 ...

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

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

  3. [置顶] linux学习之静态库和动态库的制作与使用

    linux中静态库和动态库的制作与使用 一.静态链接库 1.首先编写模块程序example.c.example.h 2.使用gcc -c example.c -o example.o编译example ...

  4. linux 静态库和动态库(共享库)的制作与使用(注意覆盖问题)

    一.linux操作系统支持的函数库分支 静态库:libxxx.a,在编译时就将库编译进可执行程序 优点:程序的运行环境中不需要外部的函数库 缺点:可执行程序大 动态库:又称共享库,libxxx.so, ...

  5. Linux下C++静态库、动态库的制作与使用

    参考博文:C++静态库与动态库 >> 静态库 1. 静态库的制作 a) 编辑 name.cpp 和name.h文件 b) $g++ -c name.cpp //注意带参数-c,否则直接编译 ...

  6. Linux下制作和使用静态库和动态库

    概述 Linux操作系统支持的函数库分为静态库和动态库,动态库又称共享库.linux系统有几个重要的目录存放相应的函数库,如/lib /usr/lib. 静态函数库: 这类库的名字一般是libxxx. ...

  7. Linux下Gcc生成和使用静态库和动态库详解(转)

    一.基本概念 1.1什么是库 在windows平台和linux平台下都大量存在着库. 本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行. 由于windows和linux的平台不同( ...

  8. Linux下Gcc生成和使用静态库和动态库详解

    参考文章:http://blog.chinaunix.net/uid-23592843-id-223539.html 一.基本概念 1.1什么是库 在windows平台和linux平台下都大量存在着库 ...

  9. 【转】Linux下gcc生成和使用静态库和动态库详解

    一.基本概念 1.1 什么是库 在Windows平台和Linux平台下都大量存在着库. 本质上来说,库是一种可执行代码的二进制形式,可以被操作系统载入内存执行. 由于windows和linux的平台不 ...

  10. Linux下GCC生成和使用静态库和动态库【转】

    本文转载自:http://www.cppblog.com/deane/articles/165216.html 一.基本概念 1.1什么是库 在windows平台和linux平台下都大量存在着库. 本 ...

随机推荐

  1. Python之celery的简介与使用

    celery的简介   celery是一个基于分布式消息传输的异步任务队列,它专注于实时处理,同时也支持任务调度.它的执行单元为任务(task),利用多线程,如Eventlet,gevent等,它们能 ...

  2. C#如何生成缩略图、水印

    1.安装CodeCarvings.Piczard   Install-Package CodeCarvings.Piczard 2.生成缩略图 ImageProcessingJob jobThumb ...

  3. TSP(Traveling Salesman Problem)-----浅谈旅行商问题(动态规划,回溯实现)

    1.什么是TSP问题 一个售货员必须访问n个城市,这n个城市是一个完全图,售货员需要恰好访问所有城市的一次,并且回到最终的城市. 城市于城市之间有一个旅行费用,售货员希望旅行费用之和最少. 完全图:完 ...

  4. [JS设计模式]:构造函数模式(2)

    基本用法 function Car(model, year, miles) { this.model = model; this.year = year; this.miles = miles; th ...

  5. 轨迹系列1——一种基于路网图层的GPS轨迹优化方案

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 GPS数据正常情况下有20M左右的偏移,在遇到高楼和桥梁等情况 ...

  6. 关于如何使用xposed来hook某支付软件

    由于近期有业务上的需要,所以特地花时间去研究了一下如何使用hook技术.但是当我把xposed环境和程序编写完成时,突然发现手机上的某个支付软件无法使用了.这个时候我意识到,应该是该软件的安全机制在起 ...

  7. SQLServer数据库维护(一)碎片检查整理

    一.碎片查看维护 dbcc showcontig('表名') dbcc showcontig ('T_NOFITSTUDY') 结果如下: DBCC SHOWCONTIG 正在扫描 'T_NOFITS ...

  8. Windows应急响应常识

    Windows 应急响应 常见事件ID 1102 清理审计日志 4624 账号登陆成功 4625 账号登陆失败 4672 授予特殊权限 4720 创建用户 4726 删除用户 4728 将成员添加到启 ...

  9. 使用 Dashboard - 每天5分钟玩转 Docker 容器技术(174)

    上一节我们完成了 Kubernetes Dashboard 的安装,本节就来实践一下. Dashboard 界面结构 Dashboard 的界面很简洁,分为三个大的区域. 顶部操作区在这里用户可以搜索 ...

  10. window下 mongodb快速安装

    下载地址 https://www.mongodb.org/dl/win32/x86_64-2008plus-ssl 建立文件夹和文件 #数据库路径 dbpath=G:\mongodb3.4.12\da ...