linux应用开发-设计静态库

linux应用开发-设计静态库

一 应用程序

函数库(用户)和系统调用(linux内核)

二 库分类

1 静态链接库(*.a)

一个程序使用一个函数库

2 动态链接库(*.so)

多个程序可以使用同一个函数库,减少程序的大小

3 静态库比动态库大

三 制作自己的静态库

1 gcc -c mylib.c -o mylib.o

2 ar cqs libmylib.a mylib.o

3 将做好的libmylib.a 复制到/usr/lib目录下

四 使用自己创建的静态库

1 linux默认链接动态库,若要链接静态库则:gcc -static hello.c -o helloc.out

2 使用自己的动态库:

创建main.c来调用自己的库

创建main.h里面包含了要调用的函数库里面的函数的原型声明

编译调用gcc -static -lmylib main.c -o main.out -l参数为调用自己的lib

GCC在链接时,默认只会链接C函数库,而对于其他的函数库,则需要使用-l选项来显示地指明需要链接。

linux目录/usr/lib和/lib下存放了相应的lib,常用libmylib.a来命名,前面的lib必须加上

五 简单加法计算器案列

1 编写add.c

2 编译成静态库:gcc -c add.c -o add.o      ar cqs libadd.a add.o

3 复制到/usr/lib: cp libadd.a /usr/lib/

4 创建main.c来作为主函数调用add函数 创建main.h来包含add函数的声明

5 编译调试:gcc -static -ladd main.c -o main.out

6 运行./main.out

时间: 2024-10-07 21:17:25

linux应用开发-设计静态库的相关文章

linux应用开发-设计动态库

linux应用开发-设计动态库 一 制作动态库 1. gcc –c mylib.c –o mylib.o 2. gcc -shared -fPIC mylib.o -o libmylib.so  3. 将制作好的libmylib.so 复制到/usr/lib 4 -fpic 使输出的对象模块是按照可重定位地址方式生成 5 -shared 指明产生动态链接库. 二 基本概念见上一章设计静态库

iOS开发之静态库(五)—— 图片、界面xib等资源文件封装到静态框架framework

编译环境:Macbook Air + OS X 10.9.2 + XCode5.1 + iPhone5s(iOS7.0.3) 一.首先将资源文件打包成bundle 由于bundle是静态的,所以可以将“iOS开发之静态库(三)—— 图片.界面xib等资源文件封装到.a静态库”中生成的“MyToolsWithAssetsA.bundle”文件直接拿过来使用. 二.创建静态框架 创建过程参考“iOS开发之静态库(四)—— 静态框架framework制作”,里面介绍非常详细. 静态库代码借用“iOS开

[Bada开发]使用静态库

bada是三星公司自主研发的操作系统,本文介绍了如何创建静态文件,将它们与你的程序连接起来,在你的程序中使用静态库的方法.静态库让用户可以连接程序,而不需重新编辑代码,从而节省了编辑时间. 静态库把目标文件集合起来,使用ar (archive)程序创建.静态库的二进制文件以"a"拓展名结束.静态库让用户可以连接程序,而不需重新编辑代码,从而节省了编辑时间. 本文介绍了如何创建静态文件,将它们与你的程序连接起来,在你的程序中使用它们的方法.(推荐阅读:在bada程序中使用共享库) 创建静

用VS2013+VELT-0.1.3进行Linux开发:静态库

快乐虾 http://blog.csdn.net/lights_joy/(QQ群:Visual EmbedLinux Tools 375515651) 欢迎转载,但请保留作者信息 本文仅适用于vs2013 + velt-0.1.3 1.1    什么是VELT VELT的全称是Visual EmbedLinuxTools,它是一个与visual gdb类似的visual studio插件,用以辅助完成Linux开发.利用这个插件,将可以在visual studio的IDE中进行Linux应用程序

iOS开发之静态库(一)—— 基本概念

在项目开发过程中,经常出现优秀代码重用现象,又或者提供给第三方功能模块却又不想让其看到源代码,这些时候,通常的做法是将代码封装成库或者框架,这些在Windows编程或Linux编程中非常容易实现的过程,在iOS开发中却遇到了麻烦,原因是:苹果公司禁止在iOS开发中使用动态库(而苹果自己却可以使用动态库),同时,苹果也从Xcode中移除了创建静态框架的功能.值得庆幸的是我们可以通过对Xcode进行小小的改动来创建静态框架,而静态库和静态框架是被App Store所允许的,其实静态框架本质上说也是静

iOS开发之静态库(四)—— 静态框架framework制作

前面介绍过,虽然苹果公司禁止在iOS开发中使用动态库,而且也从XCode中移除了创建静态框架的功能,但我们还是可以通过对XCode进行小小的改动来创建静态框架. 编译环境:Macbook Air + OS X 10.9.2 + XCode5.1 + iPhone5s(iOS7.0.3) 首先创建一个静态库工程 给工程起个名字 创建成功 XCode5.0以后,创建的工程中默认自带了单元测试的代码: 即MyToolsFrameworkTestTests目录及TARGETS中的MyToolsFrame

[付费视频]Delphi视频Android开发使用静态库(A)和动态库(SO)

关于本视频:前阵子接到一个委托,解决Delphi开发Android程序中串口通信的问题,厂家那边提供了c文件,需要翻译成delphi可用,翻译倒是比较简单.不过后来翻译读写ic卡单元的时候进行不下去了,delphi还提供的不太完整,而且底层提供的也有些bug,然后就有了直接使用.a和.so文件的想法,后来花不少精力,查阅资料和调试,终于调通了.特意录制本视频希望能为大家解决一些实际问题.顺便赚点零花钱. 视频录制过程间隔时间比较长,拼接起来的,观看过程中会有一些停顿现象.还有普通话太烂,请大家一

李洪强iOS开发之静态库

iOS开发拓展篇—静态库 一.简单介绍 1.什么是库? 库是程序代码的集合,是共享程序代码的一种方式 2.库的分类 根据源代码的公开情况,库可以分为2种类型 (1)开源库 公开源代码,能看到具体实现 比如SDWebImage.AFNetworking (2)闭源库 不公开源代码,是经过编译后的二进制文件,看不到具体实现 主要分为:静态库.动态库 二.静态库和动态库 1.静态库和动态库的存在形式 静态库:.a 和 .framework 动态库:.dylib 和 .framework 2.静态库和动

iOS开发之静态库.a的制作

简介 什么是库? 库是程序代码的集合,是共享程序代码的一种方式 根据源代码的公开情况,库可以分为2种类型 开源库 公开源代码,能看到具体实现 比如SDWebImage.AFNetworking 闭源库 不公开源代码,是经过编译后的二进制文件,看不到具体实现 主要分为:静态库.动态库 静态库和动态库 静态库和动态库的存在形式 静态库:.a 和 .framework 动态库:.dylib 和 .framework 静态库和动态库在使用上的区别 静态库:链接时,静态库会被完整地复制到可执行文件中,被多