当前位置: 首页 > news >正文

p2p网站建设教程装修估价网

p2p网站建设教程,装修估价网,网站注册系统,企业网站国内现状文章目录 GCCMakefile、make GCC 常见的GNU编译器是GCC其包含gcc以及g等,适用于C/C中,在Windows系统中通常使用IDE进行程序的编写和编译、链接等操作,但在Linux系统中通常使用GNU编译器来进行,对于C/C等高级语言需要进行预编译、编…

文章目录

    • GCC
    • Makefile、make

GCC

   常见的GNU编译器是GCC其包含gcc以及g++等,适用于C/C++中,在Windows系统中通常使用IDE进行程序的编写和编译、链接等操作,但在Linux系统中通常使用GNU编译器来进行,对于C/C++等高级语言需要进行预编译、编译、汇编、链接最后才能生成可执行文件使用。实际使用直接g++ test.cpp -o test.out && ./test.out生成可执行文件test.out并运行,如果不用-o指定生成名称的话即g++ test.cpp && ./a.out则默认生成a.out

GNU编译器基本选项说明实例
-E预编译:宏定义展开、头文件展开、条件编译等,同时将代码中的注释删除,这里并不会检查语法; 生成.i预处理文件g++ -E test.cpp -o test.i
-S编译:检查语法,将预处理后文件编译,生成.s汇编文件g++ -S test.i -o test.s
-c汇编:将汇编文件生成目标文件(二进制文件); 生成.o文件(机器码)g++ -c test.s -o test.o
-o链接、指定输出文件的名称。当与编译和链接命令一起使用时,它指示编译器或链接器将最终的可执行文件或库输出到指定的文件名g++ test.o -o test.out
-D程序编译时,指定一个宏定义g++ test.cpp -o test.out -D MAX_NUM
-w编译时不生成任何警告g++ test.cpp -o test.out -w
-Wall编译时生成全部警告g++ test.cpp -o test.out -Wall
-std指定编译的标准g++ -std=c++11 test.cpp -o test.out
-l编译时指定使用到的库----
-L编译时指定库的路径----
-g编译时生成调试信息,可以进行调试----

Makefile、make

   一个项目通常有多个源文件,如果要使用GNU编译器逐个编译的话则十分复杂例如g++ a.cpp b.cpp c.cpp d.cpp -o test.out所以使用Makefile文件对编译的规则进行封装,指定不同源文件的编译顺序以及编译规则,最后使用make命令进行自动编译,当前目录下使用make命令会自动进入Makefile文件并按照其中规定的规则进行编译。

  • 命名:makefile/Makefile
  • 规则:一个makefile文件中有一个或者多个规则,如下为一个基本规则。
目标 ...(可以多个):依赖 ...命令(必须TAB缩进)...
...
test.out:a.cpp b.cpp c.cpp d.cpp g++ a.cpp b.cpp c.cpp d.cpp -o test.out

目标即最终要生成的文件例如test.out
依赖则是生成目标所需要的文件例如a.cpp b.cpp c.cpp d.cpp
命令则对依赖执行操作生成目标例如g++必须使用TAB缩进

  • 原理:某个规则中的命令执行前检查规则中的依赖,存在则执行不存在则继续向下检查是否有规则是生成该依赖的有则首先执行生成依赖的其他规则其他规则都是为第一个规则服务
test.out:a.o b.o c.o g++ a.o b.o c.o -o test.outa.o:a.cpp //生成依赖a.o规则g++ -c a.cpp -o a.ob.o:b.cpp //生成依赖b.o规则g++ -c b.cpp -o b.oc.o:c.cpp //生成依赖c.o规则g++ -c c.cpp -o c.o
  • 检测更新:在执行规则中的命令时。会比较目标和依赖的文件时间,如果依赖的时间较晚则需要重新生成目标仅对更改的依赖和最终的生成目标的规则重新执行其他未变动的规则不用执行。
  • 变量:
      自定义变量:变量名=变量值 var=world $(var) //通过符号$获取变量的内容==world
预定义变量说明
AR归档维护程序的名称,默认为ar
CCC编译器名称,默认为cc
CXXC++编译器的名称,默认为g++
$@目标的完整名称,只可在命令中使用
$<第一个依赖文件的名称,只可在命令中使用
$^所有的依赖文件,只可在命令中使用
test.out:a.cpp b.cpp c.cpp d.cpp $(CXX) $^ -o $@ //等价于g++ a.cpp b.cpp c.cpp d.cpp -o test.out//可直接使用自定义变量
target=test.out
origin=a.cpp b.cpp c.cpp d.cpp$(target):$(origin)$(CXX) $(origin) -o $(target)
  • 模式匹配%即为一个通配符,匹配一个字符串。
target=test.out
origin=a.o b.o c.o
$(target):$(origin)$(CXX) $(origin) -o $(target)%.o:%.cpp //多次匹配生成依赖a.o、b.o、c.o的规则$(CXX) -c $< -o $@
  • 函数
函数功能参数返回实例
$(wildcard ..)获取指定目录下的指定类型的文件列表某个或多个目录下对应的某种类型的文件,多个目录用空格间隔得到若干个文件的文件列表,文件名使用空格间隔$(wildcard ./*.c ./*.o)//获取当前目录所有.c和.o文件
$(patsubst . .. ...)查找...中的字符串和.的字符串是否符合,一致则转化为..字符串均可以使用通配符%表示任意字符串返回被替换后的字符串$(patsubst %.c,%.o,a.c b.c c.c )//返回为a.o b.o c.o 仅进行字符串的改变不改变文件的本身属性
target=test.out
origin=$(wildcard ./*.c)
index=$(patsubst %.c %.o $(origin))$(target):$(index)$(GXX) $(index) -o $(target)
%.o:%.c$(GXX) -c $< -o $@.PHONY:clean //伪目标,不会生成文件
clean: //删除所有的.o文件,使用外部命令行使用make clean即可rm ./*.o  //必须使用TAB缩进
http://www.yayakq.cn/news/84650/

相关文章:

  • 展示形网站怎么建网站建设公司海报
  • 关于网站及新媒体平台建设的规划微商城手机网站制作公司
  • 做网站需要注册商标是几类2017网站备案
  • 微机课做网站网站平台策划方案
  • 北京手机网站开发费用关于网站建设项目创业计划书
  • 小网站链接怎么找商丘百度推广电话
  • 主题资源网站建设作业外贸网站翻译建设
  • 青岛网站建设网址网站建设费用IP
  • 如今流行的网站建设广告建设网站建设
  • 深圳企业网站怎么做投简历网站
  • 2008系统怎么做网站广州h5网站制作
  • 网站的创新点有哪些上海做高端网站制
  • 重庆网站建设的意义如何修改wordpress登录页面
  • 网站怎么做架构图网站后台发布图片upload failed
  • 关于单位网站建设的请示中国核工业第五建设有限公司海南
  • 一个月做网站维度 网站建设
  • dw建设网站的代码模板下载嘉兴企业自助建站
  • 安全可信网站wordpress 显示不正常
  • 网站推广与搜索引擎优化衡水网站设计怎么做
  • 目前最先进的网站建设技术免费制作招聘的app
  • 做图片网站会被网站开发外键
  • 网站可以做315认证吗网络营销策略定义
  • 企业网站推广技巧和方法外贸做平台好还是自己建网站好
  • 个人不能建设论坛网站怎么办学生个人主页制作
  • 做搜狗手机网站长尾展览展示搭建设计
  • 视频 播放网站怎么做的全网vip视频网站怎么做
  • 百度推广建设网站是不是合发乌海市住房城乡建设厅网站
  • 如何做京东购物网站新开传奇网站迷失版
  • 腾讯云网站建设教程视频网站建设项目需求分析
  • 网站黑白了树莓派wordpress