Linux .o a .so .la .lo的区别及libtool相关介绍
原文地址:http://www.eetop.cn/blog/html/40/202640-8862.html
o: 编译的目标文件
a: 静态库,其实就是把若干o文件打了个包
so: 动态链接库(共享库)
lo: 使用libtool编译出的目标文件,其实就是在o文件中添加了一些信息
la: 使用libtool编译出的库文件,其实是个文本文件,记录同名动态库和静态库的相关信息
1 libtool的工作原理
libtool
是一个通用库支持脚本,将使用动态库的复杂性隐藏在统一、可移植的接口中;使用libtool的标准方法,可以在不同平台上创建并调用动态库。可以认为libtool是gcc的一个抽象,其包装了gcc(或者其他的编译器),用户无需知道细节,只要告诉libtool需要编译哪些库即可,libtool将处理库的依赖等细节。libtool只与后缀名为lo、la为的libtool文件打交道。
libtool主要的一个作用是在编译大型软件的过程中解决了库的依赖问题;将繁重的库依赖关系的维护工作承担下来,从而释放了程序员的人力资源。libtool提供统一的接口,隐藏了不同平台间库的名称的差异等细节,生成一个抽象的后缀名为la高层库libxx.la(其实是个文本文件),并将该库对其它库的依赖关系,都写在该la的文件中。该文件中的dependency_libs记录该库依赖的所有库(其中有些是以.la文件的形式加入的);libdir则指出了库的安装位置;library_names记录了共享库的名字;old_library记录了静态库的名字。
当编译过程到link阶段的时候,如果有下面的命令:
$libtool --mode=link gcc -o myprog -rpath /usr/lib –L/usr/lib –la
libtool
会到/usr/lib路径下去寻找liba.la,然后从中读取实际的共享库的名字(library_names中记录了该名字,比如liba.so)和
路径(lib_dir中记录了,比如libdir=’/usr/lib’),返回诸如/usr/lib/liba.so的参数给激发出的gcc命令行。
如果liba.so依赖于库/usr/lib/libb.so,则在liba.la中将会有dependency_libs=’-L/usr/lib
-lb’或者dependency_libs=’/usr/lib/libb.la’的行,如果是前者,其将直接把“-L/usr/lib
–lb”当作参数传给gcc命令行;如果是后者,libtool将从/usr/lib/libb.la中读取实际的libb.so的库名称和路径,然后组
合成参数“/usr/lib/libb.so”传递给gcc命令行。
当要生成的文件是诸如libmylib.la的时候,比如:
;B*} c&jP:O0
e
i
Ph CUO6c0
$libtool --mode=link gcc -o libmylib.la -rpath /usr/li
相关文档:
例一:发送Signaling Packet:
Signaling Command是2个Bluetooth实体之间的L2CAP层命令传输。所以得Signaling Command使用CID 0x0001.
多个Command可以在一个C-frame(control frame)中发送。
如果要直接发送Signaling Command.需要建立SOCK_RAW类型的L2CAP连接Socket。这样才有机会自己填充Command Code,Identi ......
某个日见重要的网络芯片公司即将收购一家最早点商业化嵌入式Linux 的公司。 Cavium 公司已同意支付5000 万美元给已经独立运行十年之久的 MontaVista 公司。
这是今年第二例嵌入式Linux 操作系统、工具及服务市场的并购案例。第一例是在今年五月,当时英特尔花费 88400 万美元收购 Wind River 系统公司。如同Wind River 收 ......
在CenotOS 5.3中文环境下安装Oracle 10g R2时,进入图形化界面后,发现中文乱码。
在网上搜索后,发现是由于Linux上没有安装Oracle安装时使用的字体库造成的。
从以下网站下载字体库
http://download.csdn.net/source/1073202
然后在Linux下执行以下命令,把字体库安装到相应位置即可
mkdir -p /usr/share/fonts/zh_CN ......
1.UNIX是一个强大、健壮、稳定的操作系统。
特点:
1.UNIX很简介,系统调用数目少,有明确的设计目的。
2.一切皆文件。
3.UNIX的内核和系统都是C开发的,利于移植。
4.提供一套进程间通信的元语。
2.UNIX发展成为多任务、多线程、虚拟内存、换页、动态连接和TCP ......
双系统安装时,Linux从硬盘启动:
安装windows就不再讲了。
下载Linux系统镜像,我下载的是CentOS5.3。将Linux镜像解压到一个fat32分区目录(我的是F盘)。
并将镜像中isolinux目录下的vmlinuxz和initrd.img两个文件copy到F盘(我的是F盘)。下载wingrub,双击安装。安装后打开wingrub出来一界面choose driver让你选择盘 ......