Linux下的C編程入門教程.ppt
Linux下c+編程,北郵百度俱樂部蘇冉旭suranxu.bupt,為什么學習Linux下C+開發(fā),Agenda,果斷學習Linux下C+!,Linux下開發(fā)環(huán)境,G+簡介與實例,g+/gcc是什么Linux下的c/c+編譯器一個最簡單的g+語句g+hello.cppohello.exe,G+簡介與實例,G+功能選項-I指定頭文件路徑-Ll指定庫文件路徑常用g+編譯選項-g-pipeWallfPIC一條標準格式的g+語句g+-gpipeWallfPIChello.cpp-ohello.exe-Ibbc_log-Lbbc_log/lib-lbbc_log-lboost_thread,Makefile初步,什么是Makefile?Makefile是一個按格式書寫的g+語句文件。Makefile是g+和shell語句集合。它允許我們按照規(guī)定格式使用以上兩種語句設計編譯行為。Make是一種控制編譯或重復編譯的軟件工具。它自動決定一個程序中哪些文件需要重新編譯,并重新運行指定的命令。,Makefile基礎,文件名為“Makefile”或“makefile”Makefile的規(guī)則格式:目標(target):依賴(prerequiries)命令(command)一個最簡單的Makefileall:g+hello.cpp-ohello.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)調用子文件夾中的Makefilesubsystem:cdsubdir&&make,GDB單步調試,命令格式gdb./program_namegdbcore_name./program_name常用子命令break-設置斷點continue-繼續(xù)執(zhí)行直到下個斷點step-單步跳入next-單步跳過print-打印值quit-退出,GDB高級,-d指出源代碼所在路徑list顯示源代碼ptype顯示類型定義代碼x查看內存地址的值,格式x/(NUM)(FMT)ADDRESSInfolocal查看當前棧的局部變量值Infoarg查看當前棧的參數值Wherefull查看當前堆棧所有信息,Windows遷移代碼常見問題,缺少最后一行空行多余的/r回車符dos2unixfromdos中文注釋亂碼iconvfgbktutf8不能忍的頭文件#include不兼容的宏,庫函數snprintf(),_FUNCTION_,_FILE_,_LINE_#ifdefWIN_32#define#endif,Q&A,Thanks!,