编译Linux使用的.a库文件

首先是须要编译成.a的源文件

hello.h:

#ifndef __INCLUDE_HELLO_H__
#define __INCLUDE_HELLO_H__ void hello(const char *name); #endif // end __INCLUDE_HELLO_H__

hello.c

#include "stdio.h"

void hello(const char *name)
{
printf("Hello world %s\n", name);
}

和一个在linux平台上做測试的main.c

#include "hello.h"

int main()
{
hello("everyone"); return 0;
}

在Linux上面做測试。编译成.a文件,主要利用.o文件和ar命令

1、首先生成.o文件:

gcc -c hello.c

这样源码的文件夹下就会产生一个hello.o

2、利用ar命令,从.o文件里创建.a文件

ar cr libhello.a hello.o

这样就能够生成.a文件了。注意,所要生成的.a文件的名字前三位最好是lib,否则在链接的时候。就可能导致找不到这个库

3、在linux下測试使用

编译main.c。并让hello.a链接到main中

gcc main.c -L. -lhello -o main(注意这里-L后面有个.)

这样在当面文件夹以下就出现了可执行程序main。直接执行就是我们索要的结果了

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvemVuZ3Jhb2xp/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">

编译Linux使用的.a库文件的更多相关文章

  1. linux编译链接找不到库文件的解决方法。

    今天编译出现ld: 0706-006 Cannot find or open library file: -l xerces-c_static,ld:open(): A file or directo ...

  2. [转]Windows与Linux系统下的库文件介绍

    什么是库   库文件是一些预先编译好的函数的集合,那些函数都是按照可再使用的原则编写的.它们通常由一组互相关联的用来完成某项常见工作的函数构成,从本质上来说库是一种可执行代码的二进制形式,可以被操作系 ...

  3. windows下编译Android版本的boost库文件

    1.起因: 手上有一个用到了boost的asio库和thread库的工程要编译到手机上(Android版本和ios版本),本文只介绍如何编译到Android版本,ios版本之后再介绍,也许就不介绍了( ...

  4. 永远也记不住的linux环境变量,库文件,头文件,交叉编译...

    一.环境变量1.node-v4.9.1-linux-armv7l1)安装cp node-v4.9.1-linux-armv7l.tar.gz /usr/local/cd /usr/local/tar ...

  5. VS编译linux项目生成静态库并在另一个项目中静态链接的方法

    VS2017也推出很久了,在单位的时候写linux的服务端程序只能用vim,这让用惯了IDE的我很难受. 加上想自己撸一套linux上的轮子,决定用VS开工远程编写调试linux程序. 在window ...

  6. 编译iOS使用的.a库文件

    首先是须要编译成.a的源文件 hello.h: #ifndef __INCLUDE_HELLO_H__ #define __INCLUDE_HELLO_H__ void hello(const cha ...

  7. linux下编译自己的库文件实践

    有了我传的那个资料,这个就没什么用了,那个太经典了,这个就是记录我自己的实践.:-) linux下文件的类型是不依赖于其后缀名的,但一般来讲:.o,是目标文件,相当于windows中的.obj文件.s ...

  8. Linux安装库文件(环境变量和makefile)

    CFLAGS 表示用于 C 编译器的选项,CXXFLAGS 表示用于 C++ 编译器的选项.这两个变量实际上涵盖了编译和汇编两个步骤. CFLAGS/CPPFLAGS: 指定头文件(.h文件)的路径, ...

  9. Linux C C语言库的创建和调用

    C语言库的创建和调用 简介: 假如,你有一个庞大的工程,代码量达到数百兆甚至是数G,你经常会遇到好多重复或常用的地方.每次使用到这些地方时如果都重新写一份基本相同的代码,这当然可以,不过这样会大大地降 ...

随机推荐

  1. Storm概念学习系列之核心概念(Tuple、Spout、Blot、Stream、Stream Grouping、Worker、Task、Executor、Topology)(博主推荐)

    不多说,直接上干货! 以下都是非常重要的storm概念知识. (Tuple元组数据载体 .Spout数据源.Blot消息处理者.Stream消息流 和 Stream Grouping 消息流组.Wor ...

  2. Spring.Net学习笔记(4)-属性及构造器注入

    一.开发环境 操作系统:Win10 编译器:VS2013 .Net版本:.net framework4.5 二.涉及程序集 Spring.Core.dll:1.3.1 Common.Logging.d ...

  3. Selenium Grid操作使用指南

    一.实现串行多浏览器执行脚本1.启动selenium-server-standalonejava -jar selenium-server-standalone-2.44.0.jar2.脚本代码 fr ...

  4. Java反射机制实战——字段篇

    首先,我们来认识几个类. Class(java.lang.Class) Class对象是一个特殊对象,每一个类都有一个Class对象,用来创建该类的“常规”对象.可以通过对象的getClass()方法 ...

  5. Farseer.net轻量级开源框架 入门篇:修改数据详解

    导航 目   录:Farseer.net轻量级开源框架 目录 上一篇:Farseer.net轻量级开源框架 入门篇: 添加数据详解 下一篇:Farseer.net轻量级开源框架 入门篇: 删除数据详解 ...

  6. linux下启动、停止tomcat,杀死tomcat进程

    1.打开终端 cd /java/tomcat 2.执行 bin/startup.sh #启动tomcat bin/shutdown.sh #停止tomcat tail -f logs/catalina ...

  7. Android(java)学习笔记206:JNI之工具快速开发步骤

    下面通过一个案例说明一下,利用工具jni快速开发步骤 1.新建一个Android工程,命名为"03_对int数组加1",如下: 2. 在MainActivity.java中对add ...

  8. NSAllowsArbitraryLoadsInWebContent NSAllowsArbitraryLoads

    By specifying NSAllowsArbitraryLoadsInWebContent, you are overriding NSAllowsArbitraryLoads on iOS 1 ...

  9. 用Java实现在【520,1314】之间生成随机整数的故事

    做一个积极的人 编码.改bug.提升自己 我有一个乐园,面向编程,春暖花开! 在未来城市工作的的程序员小木,做了一个梦,梦到自己在塔鲁姆的街道上看到一个姑娘,这个姑娘从远处走向他,脸上带着微笑.让小木 ...

  10. Spring框架系列(二)--装配和注入Bean

    企业日常开发中,几乎都是Spring系的框架,无论是SSM.还是现在大火的SpringBoot+JPA/MyBatis,使用最大的目的就是简化开发 基本模块: 核心容器:Beans.Core.Cont ...