嵌入式视频行业。
分类: 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 #ifndef HELLO_H_111 main.c: #include OBJS = fun.o hello.o all : test install : libhello.la libhello.la : $(OBJS) main.o : main.c fun.h hello.h fun.o : fun.c fun.h hello.o : hello.c hello.h clean :
void output(char *ss)
{
printf("HELLO %s/n", ss);
}
hello.h
#define HELLO_H_111
void output(char *ss);
#endif
----------------------------
#include "hello.h"
#include "fun.h"
void
main()
{
output("world");
printf("Test Value:%d/n", add(1, 2));
}
LO_OBJS = main.lo fun.lo hello.lo
PACKAGE_VERSION = 1:1:1
LIBDIR=/usr/local/lib
test : libhello.la main.o
libtool --mode=link gcc -g -O -o test main.o libhello.la -lm
libtool gcc -g -O -o libhello.la $(LO_OBJS) -rpath ${LIBDIR} -lm -version-info ${PACKAGE_VERSION}
libtool --mode=compile gcc -g -O -c main.c
libtool --mode=compile gcc -g -O -c fun.c
libtool --mode=compile gcc -g -O -c hello.c
@rm -f OBJ/* lib*.a *~ *core *.lo *.o *.la
@rm -rf .libs