第一章 入门

来源:互联网 发布:办公室做数据是做什么 编辑:程序博客网 时间:2024/05/16 17:39

第一章 入门。

1.linux应用程序表现为2种特殊类型的文件:可执行文件和脚本文件,对应windows下的。exe和批处理。linux不要求可执行文件或脚本有特殊的饿文件扩展名,文件系统属性用来表明一个文件是否为可执行程序。

2.我们是与一个叫bash的脚本进行交互的,脚本里可执行文件的执行要么在PATH环境变量里, 要么自己定义路径,/bin为绝对路径,bin为相对路径,指的紧接着当前路径往下。可以通过echo &PATH显示环境变量,以:隔开,也可以加入或者删除环境变量。

3.文本编辑器用的是vi或者vim,建议vim,因为程序的字体会给你颜色提示,使用的时候可以vim aa.txt,就创建或者打开aa.txt了。

4.C语言编辑器选择gcc,比如gcc -o hello hello.c,“-o hello”是一个参数,依旧是-o后面必须紧跟着参数,hello.c也是参数,所以这2个位置应该可以互换。执行的时候最好./hello,.是当前目录

5.系统正常使用提供的程序,都可在目录/user/bin中找到,有点像windows的system32感觉。

6.可以使用-I标志来包含保存在子目录或者非标准位置中的头文件,例如gcc -I/usr/openwin/include/   fred.c, 他告诉编译器,不仅在标准位置搜索头文件,也在/usr/openwin/include/ 路径下搜索fred.c的头文件

7.库文件,标准库文件一般存储在/lib和/usr/lib目录中。.a代表静态库,.so代表动态库,函数库通常同时以静态库和动态库同时存在,可以通过完整的库的路径名或用-l标志来告诉编译器要搜索的库文件,例如gcc -o fred fred.c /user/lib/libm.a,告诉编译器除了搜索标准的的C语言函数库外,还要搜索数学库,或者gcc - o fred fred.c -lm,-lm如果是共享库,编译器则自动选择共享库。

当然也可以通过-L标志增加编译器的苦的搜索路径,例如:gcc -o fred -L/usr/openvin/lib   fred.c -lX11,这条命令用 /usr/openvin/lib目录中的libX11库版本来编译fred。

静态库的创建:

gcc -c bill.c fred.c  //编译,形成.o文件,相当于windows下的obj目标文件,最后通过连接形成可执行文件

gcc -c program.c //program.c调用了库文件里的函数,并且有一个。h声明了库函数。

gcc -o program program.o bill.o//链接生成可执行文件。

 

我也可以创建我自己的库文件,利用ar程序把目标文件放到一个库里。

ar crv libfoo.a bill.o fred.o//库文件创建好了,目标文件也放进去了,要想成功地使用函数库,还需要一个内容表,可以通过ranlib命令来完成,lib下,这一步不是必须的。

ranlib libfoo.a

现在库函数可以使用了

gcc -o program program.o libfll.a 或者

gcc -o program program.o  -L. -lfoo

共享库:

为了使发行后的库函数可以修改,而不需要修改客户的代码,因为静态库会将库函数连接到自己的可执行文件中,如果库函数错了,客户代码也需要修改,所以引用了动态库。

8.获取帮助

man gcc

info gcc

 

原创粉丝点击