Linux程序设计 知识点总结 第一章

在看Linux程序设计这本书,第一章主要讲解了Linux程序设计相关的基础内容,在此记录一下,不然过不了多久又忘了。。


应用程序通常存放在特定目录中:

/bin:二进制文件目录,用于存放启动系统时用到的程序。

/usr/bin:用户二进制文件目录,用于存放用户使用的标准程序。

/usr/local/bin:本地二进制文件目录,用于存放软件安装的程序。

/sbin和/usr/sbin:存放系统管理工具的目录。


linux修改PATH的方法:

1.命令行输入PATH=$PATH:/path,增加path到PATH中,用户登出之后PATH恢复原样。

2.修改~目录下得.bash_profile或.profile或.bashrc文件,在其中加入PATH=$PATH:path,后使用source .bash_profile使其生效,此方法只对当前用户有效。

3.修改/etc/profile文件,类似于方法2,此方法对所有用户有效。


头文件:

C语言头文件一般存放在/usr/include目录及其子目录中。

依赖于特定Linux版本的头文件存放在/usr/include/sys和/usr/include/linux中。

X图形界面头文件存放在/usr/include/X11中。

GNU c++头文件存放在/usr/include/c++中。

gcc编译器可以使用gcc -I 来指定头文件所在目录,例如:

gcc -I./include main.c     gcc将在当前目录的include子目录下查找main.c中包含的头文件。


库文件:

静态库的特点:

每一个使用同一个函数库的程序运行时都会在内存中有同一函数的多份副本,程序文件自身也有多份 副本,消耗内存和磁盘空间。

动态库特点:

程序本身不包含共享库的函数代码,而是引用运行时可访问的共享代码,当编译好的程序被转载到内 存中执行时,函数引用被解析并产生对共享库的调用,如果有必要,共享库才被加载到内存中。通过 这种方法,系统可以只保留一份副本供所有程序同时使用,且共享库的更新可以独立于依赖它的应用程序。


标准系统库一般存放在/lib和/usr/lib目录中。

库文件的名字总是以lib开头,随后部分指明是什么库,文件名最后以.开始,说明库文件类型

.a代表传统静态函数库

.so代表共享函数库

gcc可以使用完整库文件路径来指定库文件,也可使用 -l来告诉编译器要搜索的库文件,例如: gcc -o main main.c /usr/lib/libm.a  或  gcc -o main main.c -lm      效果一样


默认情况下gcc只在标准位置搜索库文件,可使用-L标准为编译器添加搜索路径,例如:

gcc -o main -L./lib main.c -lx,   gcc将在当前目录的lib子目录下搜索x库文件。


使用gcc -c和ar 创建自己的静态库:

假设有两个源文件,分别为add.c 和 sub.c,一个头文件为lib.h

使用gcc -c编译产生目标文件,add.o 和 sub.o,  gcc -c add.c sub.c

使用ar创建归档文件,并将目标文件添加进去,   ar -crv libmath.a add.o sub.o


使用nm命令可以查看目标文件,函数库或者可执行文件里包含的函数,例如:

nm libmath.a       nm add.o    nm main



你可能感兴趣的:(Linux程序设计)