第一章 入门。 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
|
第一章 入门
最新推荐文章于 2024-02-05 20:15:52 发布