关键命令:

动态库制作命令

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

静态库制作命令

gcc -c xxx.c

ar crv libxxx.a xxx.o

例:

//hello.h
#ifndef HELLO_H
#define HELLO_H
void hello(const char * name);
#endif //hello.c
#include<stdio.h>
void hello(const char * name)
{
printf("hello %s!\n",name);
} //test.c
#include<stdio.h>
#include"hello.h"
int mian()
{
hello("csk");
return ;
}

一、将hello.c 编译成静态库

gcc -c hello.c //生成hello.o文件

ar -rcv libhello.a hello.o //生成静态库

gcc -o hello test.c -L. -lhello //链接静态库将test.c文件编译生成可执行文件hello

./hello //执行

二、将hello.c编译生成动态库

gcc hello.c -fPIC -shared -o libhello.so //生成动态库

gcc -o hello test.c -L. -lhello //链接动态库将test.c文件编译生成可执行文件hello

export LD_LIBRARY_PATH=$(pwd) 或者ldconfig "目录名" (当前文件所在的目录)

./hello //执行

使用Makefile 编译动态库

# 、准备工作,编译方式、目标文件名、依赖库路径的定义。
CC = gcc
CFLAGS := -Wall -O3 -std=c++0x OBJS = hello.o #.o文件与.cpp文件同名
LIB = libhello.so # 目标文件名
# . 生成.o文件
%.o : %.cpp
$(CC) $(CFLAGS) -fpic -c $< -o $@ # . 生成动态库文件
$(LIB) : $(OBJS)
rm -f $@
$(CC) -shared -o $@ $(OBJS)
rm -f $(OBJS) # . 删除中间过程生成的文件
clean:
rm -f $(OBJS) $(LIB)

使用Makefile 编译静态库

# 、准备工作,编译方式、目标文件名、依赖库路径的定义。
CC = gcc
CFLAGS := -Wall -O2 -std=c++0x OBJS = hello.o #.o文件与.cpp文件同名
LIB = libhello.a # 目标文件名 # . 生成.o文件
%.o : %.cpp
$(CC) $(CFLAGS) -c $< -o $@ # . 生成静态库文件
$(LIB) : $(OBJS)
rm -f $@
ar cr $@ $(OBJS)
rm -f $(OBJS) # . 删除中间过程生成的文件
clean:
rm -f $(OBJS)$(LIB)

Linux下制作静(动)态库的更多相关文章

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

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

  2. Linux下编译、使用静态库和动态库 自己测过的

    每个程序实质上都会链接到一个或者多个的库.比如使用C函数的程序会链接到C运行时库,GUI程序会链接到窗口库等等.无论哪种情况,你都会要决定是链接到静态库(static libary)还是动态库(dyn ...

  3. linux下制作linux系统盘(光盘、U盘)

    cdrecord制作启动光盘 首先cdrecord -scanbus输出设备列表和标识,(我的此次为5,0,0)  [ˈrekərd] 然后用cdrecord -v dev=5,0,0 -eject ...

  4. 如何在linux下制作一个windows的可启动u盘?

    如何在linux下制作一个windows的可启动u盘? 情景是这样的,有一个windows10的iso,现在想通过U盘安装,要求即支持UEFI(启动引导器),又支持Legacy(启动引导器),因为有一 ...

  5. 关于VS2013下制作和使用静态库和动态库

    关于VS2013下制作和使用静态库和动态库 引言 什么是库:库是写好的现有的,成熟的,可以复用的代码. 所谓静态.动态是指链接.将一个程序编译成可执行程序的步骤: 静态库在链接阶段,会将汇编生成的目标 ...

  6. 在Linux下制作一个磁盘文件,在u-boot 阶段对emmc 烧写整个Linux系统方法

    在Linux 下制作一个磁盘文件, 可以给他分区,以及存储文件,然后dd 到SD卡便可启动系统. 在u-boot 下启动后可以读取该文件,直接在u-boot 阶段就可以做烧写操作,省略了进入系统后才进 ...

  7. 在Linux下制作Linux&windows启动盘

    在Linux下制作Linux&windows启动盘 如何在Linux-mint环境下,制作其他Linux发行版的UEFI启动盘,以及Windows10的UEFI模式启动盘. 对于U盘的操作,可 ...

  8. Linux下制作Windows启动U盘的工具

    Linux下制作Windows启动U盘的工具 很多人说Linux下制作Windwos启动盘要用GRUB4DOS建立引导,其实不用,有专门的工具的,就像Windows下有Rufus制作Linux启动U盘 ...

  9. linux下制作img文件

    一.简介 制作img文件可以使用linux系统中的dd命令制作,Linux dd 命令用于读取.转换并输出数据.dd 可从标准输入或文件中读取数据,根据指定的格式来转换数据,再输出到文件.设备或标准输 ...

随机推荐

  1. 获得WCF Client端的本地端口

    获得WCF Client端的本地端口 最近需要做个小功能,当WCF调用远程服务时,显示该调用的网速或流量.其中比较关键的一步就是需要获得WCF  Client端的本地端口,原来以为是个简单的事情,结果 ...

  2. WinDbg 命令手册

    WinDbg 命令三部曲:(一)WinDbg 命令手册   本文为 Dennis Gao 原创技术文章,发表于博客园博客,未经作者本人允许禁止任何形式的转载. 系列博文 <WinDbg 命令三部 ...

  3. linux下监控进程需掌握的四个命令

    linux下监控进程需掌握的四个命令   在LInux系统下,最困难的工作之一就是跟踪正在系统中运行的程序,尤其是现在,图形桌面使用很多的程序,只是为了生成一个桌面环境,系统中运行了太多的进程,幸运的 ...

  4. Indenting source code

    Artistic Style 1.15.3 A Free , Fast and Small Automatic Formatterfor C , C++ , C# , Java Source Code ...

  5. 企业架构研究总结(43)——企业架构与建模之ArchiMate详述(下)

    2.7 关系模型元素 企业架构模型包括了各种概念元素以及他们之间的关系,这其中的概念元素已经在前面几节中进行了阐述,而这些概念元素之间的关系则是本节的叙述重点.虽然ArchiMate中具有种类繁多的概 ...

  6. 聊天工具mychat

    python学习,自己写了个简单聊天工具mychat 最近在学习python,自己写了个最最简单的聊天工具mychatv0.1. 第一版,完成基本的聊天功能. GUI用的是自带的TKinter,用到的 ...

  7. MongoDB学习之--安全和认证

    MongoDB学习之--安全和认证 本文主要介绍两部分内容,Mongodb的安全检查配置以及安全认证操作: 虽然确保系统安全是系统管理员的重要工作,但是作为程序员了解其机制也是大有好处的,毕竟不是每个 ...

  8. 数组和Hash表

    数组和Hash表 当显示多条结果时,存储在变量中非常智能,变量类型会自动转换为一个数组. 在下面的例子中,使用GetType()可以看到$a变量已经不是我们常见的string或int类型,而是Obje ...

  9. 系统架构、网络通信、IM、视频会议技术

    专注于系统架构.网络通信.IM.视频会议技术. 主要作品: ESFramework 强悍的通信框架.P2P框架.群集平台. OMCS 简单易用的 网络语音视频 框架. MFile 语音视频录制组件. ...

  10. 一个意想不到的Javascript内存泄漏

    原文:http://point.davidglasser.net/2013/06/27/surprising-javascript-memory-leak.html 本周我在Meter的同事追踪到了一 ...