Chinaunix首页 | 论坛 | 博客
  • 博客访问: 630519
  • 博文数量: 85
  • 博客积分: 1306
  • 博客等级: 中尉
  • 技术积分: 990
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-28 11:23
个人简介

嵌入式视频行业。

文章分类

全部博文(85)

文章存档

2015年(7)

2014年(5)

2013年(41)

2012年(11)

2011年(1)

2010年(3)

2008年(17)

分类: LINUX

2013-02-04 23:17:29

转载地址:http://blog.csdn.net/rubyzhudragon/article/details...

 

o: 编译的目标文件
a: 静态,其实就是把若干o文件打了个包
so: 动态链接(共享
lo: 使用libtool编译出的目标文件,其实就是在o文件中添加了一些信息
la: 使用libtool编译出的文件,其实是个文本文件,记录同名动态和静态的相关信息

补充:libtool

1 libtool的工作原理 
libtool 是一个通用支持脚本,将使用动态的复杂性隐藏在统一、可移植的接口中;使用libtool的标准方法,可以在不同平台上创建并调用动态。可以认为libtool是gcc的一个抽象,其包装了gcc(或者其他的编译器),用户无需知道细节,只要告诉libtool需要编译哪些即可,libtool将处理的依赖等细节。libtool只与后缀名为lo、la为的libtool文件打交道。

fun.c:

int add(int a, int b)
{
 return a+b;
}
fun.h:

#ifndef _FUN_H_11
#define _FUN_H_11
int add(int a, int b);
#endif
----------------------------

hello.c:

#i nclude
void output(char *ss)
{
 printf("HELLO  %s/n", ss);
}
hello.h

#ifndef HELLO_H_111
#define HELLO_H_111
void output(char *ss);
#endif
----------------------------

main.c:

#include
#include "hello.h"
#include "fun.h"
void
main()
{
 output("world");
 printf("Test Value:%d/n", add(1, 2));
}

OBJS = fun.o hello.o
LO_OBJS = main.lo fun.lo hello.lo
PACKAGE_VERSION = 1:1:1
LIBDIR=/usr/local/lib

all : test

install : libhello.la
test : libhello.la main.o
libtool --mode=link gcc -g -O -o test main.o libhello.la -lm

libhello.la : $(OBJS)
libtool gcc -g -O -o libhello.la $(LO_OBJS) -rpath ${LIBDIR} -lm -version-info ${PACKAGE_VERSION}

main.o : main.c fun.h hello.h
libtool --mode=compile gcc -g -O -c main.c

fun.o : fun.c fun.h
libtool --mode=compile gcc -g -O -c fun.c

hello.o : hello.c hello.h
libtool --mode=compile gcc -g -O -c hello.c

clean :
 @rm -f OBJ/* lib*.a *~ *core *.lo *.o *.la
 @rm -rf .libs

阅读(1789) | 评论(0) | 转发(1) |
0

上一篇:关于版本发布管理

下一篇:libxml2

给主人留下些什么吧!~~