Linux下制作静(动)态库
关键命令:
动态库制作命令
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下制作静(动)态库的更多相关文章
- Linux下制作和使用静态库和动态库
概述 Linux操作系统支持的函数库分为静态库和动态库,动态库又称共享库.linux系统有几个重要的目录存放相应的函数库,如/lib /usr/lib. 静态函数库: 这类库的名字一般是libxxx. ...
- Linux下编译、使用静态库和动态库 自己测过的
每个程序实质上都会链接到一个或者多个的库.比如使用C函数的程序会链接到C运行时库,GUI程序会链接到窗口库等等.无论哪种情况,你都会要决定是链接到静态库(static libary)还是动态库(dyn ...
- linux下制作linux系统盘(光盘、U盘)
cdrecord制作启动光盘 首先cdrecord -scanbus输出设备列表和标识,(我的此次为5,0,0) [ˈrekərd] 然后用cdrecord -v dev=5,0,0 -eject ...
- 如何在linux下制作一个windows的可启动u盘?
如何在linux下制作一个windows的可启动u盘? 情景是这样的,有一个windows10的iso,现在想通过U盘安装,要求即支持UEFI(启动引导器),又支持Legacy(启动引导器),因为有一 ...
- 关于VS2013下制作和使用静态库和动态库
关于VS2013下制作和使用静态库和动态库 引言 什么是库:库是写好的现有的,成熟的,可以复用的代码. 所谓静态.动态是指链接.将一个程序编译成可执行程序的步骤: 静态库在链接阶段,会将汇编生成的目标 ...
- 在Linux下制作一个磁盘文件,在u-boot 阶段对emmc 烧写整个Linux系统方法
在Linux 下制作一个磁盘文件, 可以给他分区,以及存储文件,然后dd 到SD卡便可启动系统. 在u-boot 下启动后可以读取该文件,直接在u-boot 阶段就可以做烧写操作,省略了进入系统后才进 ...
- 在Linux下制作Linux&windows启动盘
在Linux下制作Linux&windows启动盘 如何在Linux-mint环境下,制作其他Linux发行版的UEFI启动盘,以及Windows10的UEFI模式启动盘. 对于U盘的操作,可 ...
- Linux下制作Windows启动U盘的工具
Linux下制作Windows启动U盘的工具 很多人说Linux下制作Windwos启动盘要用GRUB4DOS建立引导,其实不用,有专门的工具的,就像Windows下有Rufus制作Linux启动U盘 ...
- linux下制作img文件
一.简介 制作img文件可以使用linux系统中的dd命令制作,Linux dd 命令用于读取.转换并输出数据.dd 可从标准输入或文件中读取数据,根据指定的格式来转换数据,再输出到文件.设备或标准输 ...
随机推荐
- 后台XML处理
public void GetInfo() { string message = @"<?xml version='1.0' encoding='utf-8' ...
- 关于迭代器及yield的用法
1.foreach语句 C#编译器会把foreach语句转换为IEnumerable接口的方法和属性. foreach (Person p in persons) { Console.WriteLin ...
- script —— 终端里的记录器
当 你在终端或者控制台工作时,你可能想要记录在终端中所做的一切.这些记录可以用来当作史料,保存终端所发生的一切.比如说,你和一些Linux管理员们同 时管理着相同的机器,或者你让某人远程登陆到了你的服 ...
- Day4:T1小技巧(类似于指针操作)T2搜索+小细节
Day4:其中有很多小技巧get T1 一直没有听到过像这样的小技巧的略专业名词,有点类似于指针操作,之前有碰到过很多这样的题目 每次都是以不同的形式出现,但是感觉思想还是有点接近的吧(就比如某天有一 ...
- IIS 7.5配置PHP站点
准备工作 首先下载并解压PHP程序文件,比如解压到C:/PHP/,不需要安装.IIS安装略. 第一步:添加ISAPI筛选器和CGI功能 控制面板—>程序和功能—>打开或关闭Windows功 ...
- Python远程视频监控
Python远程视频监控程序 老板由于事务繁忙无法经常亲临教研室,于是让我搞个监控系统,让他在办公室就能看到教研室来了多少人.o(>﹏<)o||| 最初我的想法是直接去网上下个软件,可 ...
- 把事务封装成类似Serializable用法的特性
把事务封装成类似Serializable用法的特性 最近几天上班没事可做就想着整理常用的类库方法,验证.消息.分页.模版引擎.数据库操作.ini操作.文本操作.xml操作等,最后就是现在这个事务特性. ...
- CF 332A Down the Hatch! 超级水题。。不过题目太长了
A. Down the Hatch! time limit per test 2 seconds memory limit per test 256 megabytes input standard ...
- lua脚本中字符串分割split
function split( s, c ) for item in string.gmatch( s, "(.-)"..c) do print(item); end end s ...
- Visual Studio 2013 Preview - ASP.NET, MVC 5, Web API 2新功能搶先看
Visual Studio 2013 Preview - ASP.NET, MVC 5, Web API 2新功能搶先看 來自TechEd North America 2013的第一手消息 以下資訊均 ...