• 1. Linux下c++编程 北邮百度俱乐部 苏冉旭 suranxu.bupt@gmail.com
  • 2. 为什么学习Linux下C++开发就业百度Google网易有道
  • 3. AgendaLinux下开发环境G++简介与实例Makefile简介与实例Gdb 单步调试Windows代码迁移到Linux的常见问题果断学习Linux下C++!
  • 4. Linux下开发环境VIM + gcc + Makefile + gdb您是用VIM还是VIM还是VIM?命令行界面,无法编译,难以多文件操作,但支持插件给力但复杂的emacs其它常用方案:Windows下IDE编写,Linux下编译部署SecureCRT-SZ/RZ 或 Samba 上传下载
  • 5. G++简介与实例g++/gcc 是什么 Linux下的c/c++编译器 一个最简单的g++语句 g++ hello.cpp –o hello.exe
  • 6. 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
  • 7. Makefile初步什么是Makefile? Makefile是一个按格式书写的g++语句文件。 Makefile是 g++ 和 shell语句集合。它允许我们按照规定格式使用以上两种语句设计编译行为。 Make是一种控制编译或重复编译的软件工具。它自动决定一个程序中哪些文件需要重新编译,并重新运行指定的命令。
  • 8. Makefile基础文件名为“Makefile”或“makefile” Makefile的规则格式: 目标(target) : 依赖(prerequiries) 命令(command) 一个最简单的Makefile all : g++ hello.cpp -o hello.exe
  • 9. Makefile 标准篇先编译,后连接 变量的定义与使用 几个奇怪的变量(自动变量):$@,$<,$^ 内建函数:wildcard(), patsubst() 来看一个相对标准的Makefile
  • 10. 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
  • 11. GDB 单步调试命令格式 gdb ./program_name gdb core_name ./program_name 常用子命令 break -设置断点 continue -继续执行直到下个断点 step -单步跳入 next -单步跳过 print -打印值 quit -退出
  • 12. GDB高级-d 指出源代码所在路径 list 显示源代码 ptype 显示类型定义代码 x查看内存地址的值,格式 x /(NUM)(FMT) ADDRESS Info local查看当前栈的局部变量值 Info arg 查看当前栈的参数值 Where full查看当前堆栈所有信息
  • 13. Windows迁移代码常见问题缺少最后一行空行 多余的/r回车符 dos2unix fromdos 中文注释乱码 iconv –f gbk –t utf8 不能忍的头文件 #include 不兼容的宏,库函数 snprintf(), __FUNCTION__, __FILE__, __LINE__ #ifdef WIN_32 #define … #endif
  • 14. Q&A Thanks!