1、1,Linux下c+编程,北邮百度俱乐部 苏冉旭 ,2,为什么学习Linux下C+开发,3,Agenda,果断学习Linux下C+!,4,Linux下开发环境,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 -lbb
2、c_log -lboost_thread,7,Makefile初步,什么是Makefile?Makefile是一个按格式书写的g+语句文件。Makefile是 g+ 和 shell语句集合。它允许我们按照规定格式使用以上两种语句设计编译行为。Make是一种控制编译或重复编译的软件工具。它自动决定一个程序中哪些文件需要重新编译,并重新运行指定的命令。,8,Makefile基础,文件名为“Makefile”或“makefile”Makefile的规则格式:目标(target) : 依赖(prerequiries) 命令(command)一个最简单的Makefileall : g+ hello.cp
3、p -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)调用子文件夹中的Makefilesubsystem :cd subdir & m
4、ake,11,GDB 单步调试,命令格式gdb ./program_namegdb 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!,