[linux]LINUX程序设计cc1--入门

来源:互联网 发布:c语言a两个中括号 编辑:程序博客网 时间:2024/05/17 03:07

在学操作系统和网络时穿插着学过一点LINUX.今天开始系统的从头开始学习一下,教材是《Linxu程序设计》和《Unix环境高级编程》。

第一天:

UNIX系统:一种遵循特定规范的计算机系统,定义了所有必需的系统函数的名称、接口、行为。

Linux:一个自由发布的类Unix内核实现,是一个操作系统的底层核心。

GNU(GUN'S NOT UNIX)的GPL:自由软件及其通用许可证。(视为一种与不自由的Unix的抗议,copyleft:copyright的对立)

发行版:包含内核及很多GNU工具

文本工具:emacs,vim,gedit都是很实用的编辑器

编译器:一般自带gcc,复习下使用命令:gcc -o hello hello.c,当前目录下就生成了可执行的hello文件了:./hello


实践:创建一个小型函数库

1.工具函数:bill.c,fred.c

gcc -c bil.c fred.c//执行后从源文件编译到bill.o,fred.o目标文件

2.接口头文件申明函数:lib.h

3.调用文件:program.c

gcc -c program.c

gcc -o program program.o bil.o//链接成可执行文件

4.创建并使用一个库文件

ar crv libfoo.a bill.o fred.o//ar工具将若干单独文件归并到一个大的文件中(lib*.a为静态库命名)libfoo.a

gcc -o program1 program.o libfoo.a//可以用自己的库文件来链接了

或者 gcc -o program program.o -L. -lfoo//-L选项指定搜索目录,-lfoo(指定库的名字,lfoo:libfoo的简写)

总结:调用文件program.c 中 include 库头文件

链接时 program.o 和 库文件的归并文件 libfoo.a

分离了用户代码,头文件,库(.a)。


问题:静态库被多个程序调用时会在内存出现多个副本。

共享库:程序本身不在包含函数代码,而是引用可访问的共享代码。只有在必要时,才被加载到内存中。



原创粉丝点击