如何估算网站设计费用,以及一个成功的网站建设策划案应包含哪些关键要素?
摘要:网站设计需要多少钱,网站建设策划案范文,企业网站建设开发公司,yoast wordpress seo目录 gccg gcc和g的对比 "一段代码的使命" ●预处理 ●编译 ●汇编 ●链接 ●动静态链接
网站设计需要多少钱,网站建设策划案范文,企业网站建设开发公司,yoast wordpress seo目录
gcc/g
gcc和g的对比
一段代码的使命
●预处理
●编译 ●汇编
●链接
●动/静态链接
make/makefile gcc/g
gcc和g的对比
对于c文件而言#xff0c;使用gcc或者g并没有什么区别。而对于cpp文件#xff0c;在预处理、编译、汇编这三部分#xff0c;…目录
gcc/g
gcc和g的对比
一段代码的使命
●预处理
●编译 ●汇编
●链接
●动/静态链接
make/makefile gcc/g
gcc和g的对比
对于c文件而言使用gcc或者g并没有什么区别。而对于cpp文件在预处理、编译、汇编这三部分gcc和g也是等价的。但是在链接阶段涉及c的标准库时gcc无法链接到这些库必须加上-lstdc 选项。为了加深理解测试一下 先使用gcc编译一下gcc zz.cpp -o zz gcc无法链接到c标准库指令加上-lstdc
删除zz,使用g在重新编译一下g默认以c的方式进行编译也可以编译c文件链接的时候加上了一些c的库。 了解了gcc/g后先来复习下翻译的几个阶段将下图的过程在linux环境下分步研究 测试代码 1 #include stdio.h2 #define MAX 103 int main()4 {5 printf(Hello World!);6 //printf(Hi zxy!);7 //rprintf(How are you!);8 #ifdef MIN9 printf(Hello MIN);10 #else11 printf(Hello default);12 #endif13 printf(MAX %d\n,MAX); 14 return 0;15 }
一段代码的使命
●预处理
gcc –E mycode.c –o mycode.i
选项“-E”的作用是让 gcc 在预处理结束后停止编译过程,选项“-o”是指目标文件,“.i”文件为已经过预处理的C原始程序。 如上图所示.i文件删除了注释完成了宏的替换头文件的包含进行了条件编译#ifdef判断MIN是否被定义结果是否定的。
●编译 gcc –S mycode.i –o mycode.s
使用“-S”选项来进行查看,该选项只进行编译而不进行汇编,生成汇编代码。gcc在把代码翻译成汇编语言之前还要检查代码的规范性是否有语法错误等等。 ●汇编
gcc –c mycode.s –o mycode.o
汇编阶段是把编译生成的“.s”文件转成目标文件使用选项“-c”就可看到汇编代码已转化为“.o”的二进制目标代码。 ●链接
gcc mycode.o -o mycode
链接的过程将自己写的代码和标准库中的代码合在一起形成了可执行程序。
./mycode ●动/静态链接
file命令可以查看链接类型例如file zz
动态链接链接的是动态库,在程序执行时由运行时链接文件加载库,这样可以节省系统的开销。动态库一般后缀名为“.so”。 动态链接可以这样理解假设你生活在象牙山村村里只有一个大脚超市赵四家需要用什么商品就从家走到超市去买。 静态链接链接的是静态库编译链接时,把库文件的代码全部加入到可执行文件中,因此生成的文件比较大,但在运行时也就不再需要库文件了。其后缀名一般为“.a”。 静态链接可以这样想象刘能号称象牙山的小诸葛日常生活用品每周都要去逛一次超市它觉得很麻烦在超市进货的时候他向自己家也进了货放在家里。 静态链接不受库升级和库删除的影响因为已经拷贝了一份。但是占用了很大的空间。
make/makefile
首先要了解到make是一个命令makefile是一个文件。make和makefile搭配使用可以完成项目的自动化构建当我们输入make命令make会在当前目录下找名字为Makefile或者makefile的文件而在makefile文件中可以定义一系列的规则来指定目录中的哪些文件需要先编译哪些文件需要后编译哪些文件需要重新编译甚至于进行更复杂的功能操作。也就是说makefile写好后配合make命令使用输入命令后直接自动化编译非常的便捷 上图所示是正常编译的大致过程接下来试着将上述编译规则写入makefile文件中使用make自动化编译 这里需要注意一下文件名称一定要是makefile或者Makefile否则make是找不到的依赖方法的定义一定要以Tab键开头 当然上述的演示非常简单主要是熟悉下make和makefile。在实际的项目中可能会有不计其数的源文件这种情况下就可以在makefile中定义一系列的依赖关系和依赖方法。在上述的案例演示中zhang的生成是依赖于zhang.c的这就是依赖关系。而gcc zhang.c -o zhang这个动作就是依赖方法。
●项目清理
为了方便工程清理在makefile中定义一个clean,但是clean没有被第一个目标文件直接或间接关联那么它后面所定义的命令将不会被自动执行。需要用“make clean”来执行以此来清除所有的目标文件以便重编译。 ●伪目标
.PHONY的作用是设置伪目标伪目标的特性是总被执行验证伪目标 观察上图发现zhang生成后在zhang.c不被修改的情况下再次执行make不会再次执行会告诉我们zhang已经是最新的这其中的原理稍后在谈论。下面修改makefile文件.PHONY修饰zhang,进行测试与未修饰前相比每次都会执行。 ●原理
首先介绍一下stat命令它可以显示文件的状态信息 这里重点关注该文件的三个时间
Access:最后一次访问文件的时间。Modify:最后一次修改文件的时间。Change:最后一次改变文件属性的时间。
当第一次通过zhang.c生成zhang后前者的修改时间一定是早于后者的 当对zhang.c文件进行改动后zhang的文件修改时间会早于zhang.c这也说明zhang已经不是最新的所以会再次执行。 ●多文件练习make/makefile使用 上述过程在代码的编写上和以往的练习并没有太大的差别但是通多对makefile文件的编写使得该工程可以使用make一件编译极大的提高了开发效率。
