《Linux下的C编程入门教程.ppt》由会员分享,可在线阅读,更多相关《Linux下的C编程入门教程.ppt(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Linux下c+编程北邮百度俱乐部 苏冉旭p为什么学习Linux下C+开发pAgenda果断学果断学习Linux下下C+!pLinux下开发环境pG+简介与实例g+/gcc g+/gcc 是什么是什么LinuxLinux下的下的c/c+c/c+编译器编译器一个最简单的一个最简单的g+g+语句语句g+hello.cpp o hello.exeg+hello.cpp o hello.exepG+简介与实例G+G+功能选项功能选项-I-I 指定头文件路径指定头文件路径-L l-L l指定库文件路径指定库文件路径常用常用g+g+编译选项编译选项-g-pipe Wall fPIC-g-pipe Wall
2、 fPIC一条标准格式的一条标准格式的g+g+语句语句g+-g pipe Wall fPIC hello.cpp-o hello.exe-Ibbc_log-Lbbc_log/lib-lbbc_log-lboost_threadpMakefile初步什么是什么是Makefile?Makefile?MakefileMakefile是一个按格式书写的是一个按格式书写的g+g+语句文件。语句文件。MakefileMakefile是是 g+g+和和 shellshell语句集合。它允许我们按照规定格式语句集合。它允许我们按照规定格式使用以上两种语句设计编译行为。使用以上两种语句设计编译行为。MakeMa
3、ke是一种控制编译或重复编译的软件工具。它自动决定一个是一种控制编译或重复编译的软件工具。它自动决定一个程序中哪些文件需要重新编译,并重新运行指定的命令。程序中哪些文件需要重新编译,并重新运行指定的命令。pMakefile基础文件名为文件名为“MakefileMakefile”或或“makefilemakefile”MakefileMakefile的规则格式:的规则格式:目标目标(target):(target):依赖依赖(prerequiries)(prerequiries)命令命令(command)(command)一个最简单的一个最简单的MakefileMakefileall:all:g
4、+hello.cpp-o hello.exe g+hello.cpp-o hello.exe pMakefile 标准篇先编译,后连接变量的定义与使用几个奇怪的变量(自动变量):$,$,$内建函数:wildcard(),patsubst()来看一个相对标准的MakefilepMakefile 高级篇生成生成.a.a文件文件ar-ruv$(LIB_DIR)/lib$(LIBNAME).a$(OBJS)ar-ruv$(LIB_DIR)/lib$(LIBNAME).a$(OBJS)$(OBJS):*.cpp$(OBJS):*.cpp$(CXX)-c$-o$(INCLUDEFLAGS)$(CXX)-c
5、$-o$(INCLUDEFLAGS)多个多个TargetTarget的编译的编译all:$(target1)$(target2)all:$(target1)$(target2)调用子文件夹中的调用子文件夹中的MakefileMakefilesubsystem:subsystem:cd subdir&makecd subdir&makepGDB 单步调试命令格式gdb./program_namegdb core_name./program_name常用子命令break -设置断点continue -继续执行直到下个断点step -单步跳入next -单步跳过print-打印值quit -退出pG
6、DB高级-d 指出源代码所在路径list 显示源代码ptype 显示类型定义代码x查看内存地址的值,格式 x/(NUM)(FMT)ADDRESSInfo local查看当前栈的局部变量值Info arg 查看当前栈的参数值Where full查看当前堆栈所有信息pWindows迁移代码常见问题缺少最后一行空行缺少最后一行空行多余的多余的/r/r回车符回车符dos2unix dos2unix fromdos fromdos 中文注释乱码中文注释乱码 iconv f gbk t utf8iconv f gbk t utf8不能忍的头文件不能忍的头文件#include#include不兼容的宏,库函数不兼容的宏,库函数 snprintf(),_FUNCTION_,_FILE_,_LINE_snprintf(),_FUNCTION_,_FILE_,_LINE_#ifdef WIN_32#define#endif#ifdef WIN_32#define#endifpQ&A Thanks!