Linux_C++开发环境

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

LinuxC++开发环境目标Linux开发工具:gcc、g++、Make、gdbLinux开发工具-gccg++gcc概述GCC:GNU编译软件合集,GNUCompilerCollection主页:开发工具-g++程序编译过程编译多个文件g++-otesttest.cppmytool1.cppmytool2.cpp//把3个源文件编译链接成可执行文件test常用的编译过程g++-cmytool1.cpp//把源文件编译成目标文件,默认目标文件名为mytool1.og++-otesttest.omytool1.omytool2.o//把多个目标文件链接成可执行文件,指定可执行文件名为testLinux开发工具-gcc库相关g++–ohello–L/home/younametest.ahello.c:-L向GCC的库文件搜索路径中添加新的目录g++–ohello–lmhello.c-l:指定链接的库文件名●so:动态链接库文件●a:静态链接库文件使用库文件Linux开发工具-gcc其他编译选项-Wall:使GCC产生尽可能多的警告信息-O2:代码优化(编写出高质量的代码,是编程的关键!!)注意事项跟踪和调试程序的时候不使用-g:编译的时候加入调试信息Linux开发工具-MakeMAKE概述make是一个自动化编译链接工具MAKEFILE概述Makefile文件告诉make做什么,怎么做makefile定义了一系列的规则makefile文件需要按照某种语法规则来编写Linux开发工具-Make第一个简单的MAKEFILE实例#Itisaexamplefordescribingmakefilehello:hello.omfile.og++–ohellohello.omfile.ohello.o:hello.chello.hmfile.hg++–chello.cmfile.o:mfile.cmfile.h\hello.hg++–cmfile.cclean:rm–f*.o程序说明:生成名为hello的可执行文件,源文件有hello.c、mfile.c,其中hello.c需要头文件hello.hmfile.h,mfile.c需要头文件mfile.hhello.hLinux开发工具-MakeLinux开发工具-MakeMAKEFILE规则目标:需要由make工具创建的项目依赖关系:要创建的项目依赖哪些文件执行的命令:创建项目时需要运行的命令宏变量类似于c语言的宏,使用=定义,使用$()引用宏变量Linux开发工具-Make使用宏后的MAKEFILE实例#Itisaexamplefordescribingmakefileobjects=hello.ofiles.oCC=g++hello:$(objects)$(CC)-ohello$(objects)hello.o:hello.chello.hmfile.h$(CC)–chello.cmfile.o:mfiles.cmfile.hhello.h$(CC)–cmfile.cclean:rm–f$(objects)Linux开发工具-Make$@扩展为当前规则的目标文件名;$扩展为当前规则依赖文件列表中的第一个依赖文件;$^扩展为整个依赖文件的列表(除掉了所有重复的文件名)。$*扩展成当前规则中目标文件和依赖文件共享的文件名,不含扩展名;$?扩展为所有的修改日期比当前规则的目标文件的创建日期更晚的依赖文件,该值只有在使用显式规则时才会被使用;Linux开发工具-Make内部变量这些变量不需要括号括住Linux开发工具-Make使用内部变量后的MAKEFILE#Itisaexamplefordescribingmakefileobjects=hello.omfile.oCC=gcchello:$(objects)$(CC)-o$@$^hello.o:hello.chello.hmfile.h$(CC)–c$mfile.o:mfile.cmfile.hhello.h$(CC)–c$clean:rm–f$(objects)Linux开发工具-MakeLinux开发工具-Make隐含规则make工具中包含一些内置或隐含的规则,这些规则定义了如何从不同的依赖文件建立特定类型的目标。扩展名规则模式规则%.c:%.o$(CC)$(CFLAGS)$(CPPFLAGS)-c-o$@$后缀规则.c:.o$(CC)$(CFLAGS)$(CPPFLAGS)-c-o$@$#Itisaexamplefordescribingmakefileobjects=hello.omfile.oCC=gccCFLAGS=-Wall-O2%.o:%.c$(CC)$(CFLAGS)-c-o$@$hello:$(objects)$(CC)$(CFLAGS)-o$@$^hello.o:hello.hmfile.hmfile.o:hello.hmfile.hclean:rm–f$(objects)Linux开发工具-Make一个比较成熟的MAKEFILELinux开发工具-MakeLinux开发工具-Make伪目标在Makefile中,有的目标存在只是为了形成一条规则,完成特定的工作,并不生成新的目标文件,这样的目标称为伪目标。对于伪目标更为稳健的写法是:.PHONY:cleanclean:rm–f$(Objects)Makefile的文件名Linux开发工具-Makemake按“GNUmakefile”、“makefile”、“Makefile”的顺序寻找makefile文件。最好使用“Makefile”这个文件名。引用其它的Makefile使用include关键字把别的Makefile包含进来语法:#includefilename,filename可以保含路径和通配符查找:指定的路径、当前路径、-I或者--include-dir指定的参数、prefix/include在include前加减号“-”:不理会读取文件错误,而继续执行GNU的make工作时的执行步骤读入所有的Makefile。读入被include的其它Makefile。初始化文件中的变量。推导隐含规则,并分析所有规则。为所有的目标文件创建依赖关系链。根据依赖关系,决定哪些目标要重新生成。执行生成命令。Linux开发工具-MakeLinux开发工具-MakeMAKE参数Make命令本身可带有四种参数:标志、宏定义、描述文件名和目标文件名make[flags][macrodefinitions][targets]make-fMakefile.debug------指定描述文件make“LIBES=-LL-LS“------指定宏定义makeinstall------指定编译目标glibc库提供系统调用和基本函数的C库Linux开发工具-gdbgdb概述GNU推出的著名的程序调试工具,功能强大,操作复杂gcc-g-oeg1eg1.c//把调试信息加入到编译的文件中gdbeg1//运行并调试程序(gdb)fileeg1//功能同上,在gdb中调用文件eg1Linux开发工具-gdbgdb常用命令helpfile装入想要调试的可执行文件kill终止正在调试的程序list列出产生执行文件的源代码的一部分next执行一行源代码但不进入函数内部step执行一行源代码而且进入函数内部run执行当前被调试的程序quit终止gdbwatch使你能监视一个变量的值而不管它何时被改变break在代码里设置断点,这将使程序执行到这里时被挂起make使你能不退出gdb就可以重新产生可执行文件shell使你能不离开gdb就执行UNIXshell命令

1 / 24
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功