- 1、本文档共14页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
linux下c编程入门教程
Linux下c++编程 北邮百度俱乐部 苏冉旭 suranxu.bupt@ 为什么学习Linux下C++开发 Agenda Linux下开发环境 G++简介与实例 g++/gcc 是什么 Linux下的c/c++编译器 一个最简单的g++语句 g++ hello.cpp –o hello.exe G++简介与实例 G++功能选项 -I 指定头文件路径 -L –l指定库文件路径 常用g++编译选项 -g -pipe –Wall –fPIC 一条标准格式的g++语句 g++ -g –pipe –Wall –fPIC hello.cpp -o hello.exe -Ibbc_log -Lbbc_log/lib -lbbc_log -lboost_thread Makefile初步 什么是Makefile? Makefile是一个按格式书写的g++语句文件。 Makefile是 g++ 和 shell语句集合。它允许我们按照规定格式使用以上两种语句设计编译行为。 Make是一种控制编译或重复编译的软件工具。它自动决定一个程序中哪些文件需要重新编译,并重新运行指定的命令。 Makefile基础 文件名为“Makefile”或“makefile” Makefile的规则格式: 目标(target) : 依赖(prerequiries) tab命令(command) 一个最简单的Makefile all : g++ hello.cpp -o hello.exe Makefile 标准篇 先编译,后连接 变量的定义与使用 几个奇怪的变量(自动变量):$@,$,$^ 内建函数:wildcard(), patsubst() 来看一个相对标准的Makefile Makefile 高级篇 生成.a文件 ar -ruv $(LIB_DIR)/lib$(LIBNAME).a $(OBJS) $(OBJS): *.cpp $(CXX) -c $^ -o $@ $(INCLUDEFLAGS) 多个Target的编译 all : $(target1) $(target2) 调用子文件夹中的Makefile subsystem : cd subdir make GDB 单步调试 命令格式 gdb ./program_name gdb core_name ./program_name 常用子命令 break line_num -设置断点 continue -继续执行直到下个断点 step -单步跳入 next -单步跳过 print -打印值 quit -退出 GDB高级 -d 指出源代码所在路径 list line 显示源代码 ptype 显示类型定义代码 x查看内存地址的值,格式 x /(NUM)(FMT) ADDRESS Info local查看当前栈的局部变量值 Info arg 查看当前栈的参数值 Where full查看当前堆栈所有信息 Windows迁移代码常见问题 缺少最后一行空行 多余的/r回车符 dos2unix file fromdos file 中文注释乱码 iconv –f gbk –t utf8 不能忍的头文件 #includewindows.h 不兼容的宏,库函数 snprintf(), __FUNCTION__, __FILE__, __LINE__ #ifdef WIN_32 #define … #endif QA Thanks! * * * g++ hellowrld.cpp –o helloworld.exe g++ logDemo.cpp -o logDemo.exe -Ibbc_log -Lbbc_log/lib -lbbc_log -lboost_thread * make的递归过程指的是:在Makefile中使用“make”作为一个命令来执行本身或者其它makefile文件的过程。递归调用在一个存在有多级子目录的项目中非常有用。例如,当前目录下存在一个“subdir”子目录,在这个子目录中有描述此目录编译规则的makefile文件,在执行make时需要从上层目录(当前目录)开始并完成它所有子目录的编译。那么在当前目录下可以使用这样一个规则来实现对这个子目录的编译: subsystem: cd subdir $(MAKE) * * * * g++ hellowrld.cpp –o helloworld.exe g++ logDemo.cpp -o logDemo.exe -Ibbc_log -Lbbc_log/lib -lbbc_log -lboost_thread * mak
文档评论(0)