嵌入式 makefile编译静态库和动态库(

原创 2013年12月02日 14:58:04

一。静态库

创建静态库

  仍使用刚才的hello.c和test.c。

  第一步,生成目标文件。

  gcc -c hello.c

  第二步,把目标文件归档。

  ar r libhello.ahello.o

  file libhello.a
  下面一行命令就是教你如何在程序中链接静态库的:

  gcc test.c -lhello -L. -static-o hello.static


MAKEFILE************

CC=g++

CCFLAGS=-Wall -g

LDFLAGS=-fPIC -shared

TASKPATH=.


all: init libmkdir.a
cp -rf libmkdir.a $(TASKPATH)/lib

init:
mkdir -p $(TASKPATH)/task
mkdir -p $(TASKPATH)/lib


libmkdir.a: mkdir_mod.o
ar r libmkdir.a mkdir_mod.o

mkdir_mod.o: mkdir.h
$(CC) -c $(CCFLAGS) mkdir_mod.cpp

clean:
-rm -rf $(TASKPATH)/task
-rm -rf $(TASKPATH)/lib
-rm -rf libmkdir.a
-rm -rf mkdir_mod.o


二。动态库

编译生成动态库

gcc getmaxlen.c –fPIC –shared –olibtest.so

由以上命令生成动态库libtest.so,为了不需要动态加载动态库,在命令时需以lib开头以.so为后缀。

–fPIC:表示编译为位置独立的代码,不用此选项的话编译后的代码是位置相关的所以动态载入时是通过代码拷贝的方式来满足不同进程的需要,而不能达到真正代码段共享的目的。

–shared:指明编译成动态库。

gcc test.c –L . –l test –otest

–L:指明动态库所在的目录

-l:指明动态库的名称,该名称是处在头lib和后缀.so中的名称,如上动态库libtest.so的l参数为-ltest。

MAKEFILE************

CC=g++

CCFLAGS=-Wall -g

LDFLAGS=-fPIC -shared

TASKPATH=.


all: init libtdir.so
cp -rf libdir.so $(TASKPATH)/lib

init:
mkdir -p $(TASKPATH)/task
mkdir -p $(TASKPATH)/lib

libdir.so: mkdir_mod.o
$(CC) mkdir_mod.cpp $(LDFLAGS) -o libdir.so

clean:
-rm -rf $(TASKPATH)/task
-rm -rf $(TASKPATH)/lib
-rm -rf libdir.so
-rm -rf mkdir_mod.o

嵌入式系统中嵌套Makefile的编写

嵌入式系统中Makefile的作用不言而喻,下面我写一下嵌套Makefile的编写。 实验环境】 Ubuntu 8.10发行版、gcc等工具  我们要创建的目录结构如下: 一、创建...
  • niepangu
  • niepangu
  • 2017年02月09日 20:56
  • 470

makefile编写、GDB调试、so库文件生成

.SUFFIXES:.c .o  //.c和.o建立关联 CC=gcc SRCS=hello.c\         add.c  //同时编译两个.c文件 OBJS=$(SRCS:.c=.o)...
  • le119126
  • le119126
  • 2014年09月22日 21:31
  • 1559

【嵌入式Linux+ARM】阶段性总结(Makefile & 链接文件)

阶段性总结: 1.arm-linux-ld arm-linux-ld 的 -T 选项用来指定链接地址;
  • scottly1
  • scottly1
  • 2015年02月07日 14:34
  • 1224

Linux GCC 开发入门(一) -- 使用makefile 命令行编译

最近 要进行Linux 下 编写一个视频处理的程序。以前没有接触过linux开发,现在将自己每一步的过程,记录下来。不够肯定会有很多错误了。以后慢慢修正了。 1. 安装 Linux  --   Ub...
  • phil_gu
  • phil_gu
  • 2016年06月29日 12:39
  • 1638

Makefile之写demo时的通用Makefile写法总结

 原创作品,转载时请务必以超链接形式标明文章原始出处:http://blog.csdn.net/gqb666/article/details/8956523,作者:gqb666     前面的...
  • bailyzheng
  • bailyzheng
  • 2014年06月29日 15:44
  • 1191

Makefile实现子目录编译

Makefile实现两种子目录结构的自动查找编译
  • teddy99999
  • teddy99999
  • 2015年11月25日 13:11
  • 3536

make和makefile以及程序的编译和链接过程

一,Linux下程序运行过程  1,在一个目录下新建三个文件:main.c hello.c hello.h分别编写他们如下图:    2,想要让这个程序执行起来,就必须对上面的三个文件分别进行编...
  • qq_34992845
  • qq_34992845
  • 2016年11月03日 07:45
  • 982

简单谈谈Makefile和交叉编译工具链

先来简单谈谈生成一个可执行文件所需要的过程 预处理(preprocessing)->编译(compilation)->汇编(assembly)->连接(linking) 编译:.c->.s 汇编:...
  • czg13548930186
  • czg13548930186
  • 2017年06月11日 14:59
  • 1147

内核编译makefile详解

内核模块的编译方法 内核源码树:指导是内核源代码tar包解压缩后形成的目录(包含其下级所有目录和文件)。   已编译内核源码树:指的是已经成功生成过内核的源码树(已经成功执行过make  Uima...
  • lee244868149
  • lee244868149
  • 2014年07月31日 11:36
  • 845

用Makefile编译普通C/C++项目

在用实验室的服务器进行C++编译的时候,由于没有图形界面,只能在shell中进行操作,因此需要学习用gcc(g++)进行编译,如果命令多的话,就要用到makefile来完成批量的shell命令。 《...
  • forzhangtao
  • forzhangtao
  • 2014年10月30日 15:21
  • 701
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:嵌入式 makefile编译静态库和动态库(
举报原因:
原因补充:

(最多只允许输入30个字)