Linux 静态与动态链接库
文章选取的例子非常简单,上手容易,只是为了讲述静态与动态链接库的生成和链接过
程,还有他们之间的区别。以下例子在 gcc 4.1.1 下顺利通过。
文件预览
文件目录树如下,如你所见,非常简单。
libtest/
|-- lt.c
|-- lt.h
`-- test.c
代码
#lt.c
/* lt.c
*
*/
#include <stdio.h>
void myprint(void)
{
printf("Linux library test!\n");
}
# lt.h
/* lt.h
*
*/
void myprint(void);
#test.c
/* test.c
*
*/
#include "lt.h"
int main(void)
{
myprint();
return 0;
}
先看静态库
首先做成静态库 liblt.a 。
$ gcc -c lt.c -o lt.o
$ ar cqs liblt.a lt.o
再者,链接,这里指定了静态库的位置,注意文件顺序不可乱序。
$ gcc test.o liblt.a -o test
这个时候再来看他的引用库情况。
$ ldd test
linux-gate.so.1 => (0xffffe000)
libc.so.6 => /lib/libc.so.6 (0xb7e29000)
/lib/ld-linux.so.2 (0xb7f6e000)
动态库
做成动态库 liblt.so 。
$ gcc -c lt.c -o lt.o
$ gcc -shared -Wall -fPIC lt.o -o liblt.so
链接方法I,拷贝到系统库里再链接,让gcc自己查找
$ sudo cp liblt.so /usr/lib
$ gcc -o test test.o -llt
相关文档:
.tar
解包: tar xvf FileName.tar
打包:tar cvf FileName.tar DirName
(注:tar是打包,不是压缩!)
---------------------------------------------
.gz
解压1:gunzip FileName.gz
解压2:gzip -d FileName.gz
压缩:gzip FileName
---------------------------------------------
.tar.gz
解压:tar zxv ......
引自:http://server.it168.com/a2009/0309/267/000000267918.shtml
4.1.7 Linux的第一个进程:init(1)
init是Linux系统执行的第一个进程,进程ID为1,是系统所有进程的起点,主要用来执行一些开机初始化脚本和监视进程。Linux系统在完成内核引导以后就开始运行init程序,init程序需要读取配置文件/etc/inittab。init ......
会员下载:
http://vipdown.3800hk.com/jiaocheng/linux/linux/@LinkGate@12403487266409x1196776239x12403488007143-5740071909166dc778c8b9deb5c6b4cc@LK@/01.rar
http://vipdown.3800hk.com/jiaocheng/linux/linux/@LinkGate@12403487266409x1196776239x12403488007143-177072d80fd416c4134c7 ......
最近做linux系统裁剪,修改嵌入式系统的inittab文件时误将本机inittab文件修改。
reboot后出现
INIT: /etc/inittab[2]: missing id field
INIT: /etc/inittab[3]: missing id field.
Enterrunlevel:
输入3,或1,或singgle后出现
INIT: no more processess left in this runlevel
系统停止。
google,baidu到一篇引 ......