linux和unix编译调试-详细说明

linux和unix编译调试-详细说明

ID:39465601

大小:124.85 KB

页数:37页

时间:2019-07-04

linux和unix编译调试-详细说明_第1页
linux和unix编译调试-详细说明_第2页
linux和unix编译调试-详细说明_第3页
linux和unix编译调试-详细说明_第4页
linux和unix编译调试-详细说明_第5页
资源描述:

《linux和unix编译调试-详细说明》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、linux和unix编译调试详细说明1makefile的编写1.1make的介绍make是一个自动编译工具,根据makefile的描述判断文件的依赖关系进行自动按顺序编译,同时也可以判断文档的变更情况,只编译相关的文件。gmake是GNUmake的缩写,一般linux自带这个工具,后面介绍的makefile也是居于gmake写的。make与gmake的区别:在linux中,make和gmake是同一个文件,通过软连接实现。在其他版本的unix中,各种厂家有自己的make命令,要在其unix系统使用GNUmake而不与原来的make命令冲突,所

2、以命名为gmake。下面介绍gmake的makefile写法,在AIX和HPUX上面编译,需要先安装gmake。1.1.1makefile常见变量定义makefile中可定义变量,提供后面的代码访问。定义语法为“变量名称=变量值”,变量值可以位空,使用变量的语法为“$(变量名称)”。变量名称可以根据需要自定义,一般会定义下面的变量。CXX编译器名称CXXFLAGS编译器选项INLCUDE包含头文件的搜索目录LIBS静态和动态库的搜索目录LIB链接的静态和动态库SRC_PATH源文件所在目录SRCS源文件(通常使用SRC_PATH变量通过函数产

3、生,自动列举所有源文件)OBJ_PATH目标文件所在目录OBJS目标文件(通常使用SRCS变量通过函数产生,自动列举所有目标文件)TARGET编译最终得到的文件,可以是动态、静态库,或者可执行文件。1.1.1伪目标makefile编译命令中的目标(下一页有介绍)默认是文件,使用伪目标后,只是在显式请求时执行命令的名字,不搜索文件是否存在。有两种理由需要使用PHONY目标:避免和同名文件冲突,改善性能。语法为“.PHONY:伪目标名称”,名称可以是多个,空格分开。通常为定义某个动作集合为伪目标,去完成一件事情,例如编译某个程序、安装和清除。例如

4、某makefile可编译程序和安装。通常定义伪目标all负责编译所需要的文件,伪目标install实现拷贝编译得到的文件拷贝到安装目录,伪目标clean负责清除编译产生的文件。1.1.2运行规则规则部分真正执行代码的编译,这部分可分为多个规则。结构包含目标文件、依赖文件、和执行的命令集合。target_file:dependency_filescommandstarget_file为目标文件,dependency_files为得到target_file所需要的文件,commands为命令集合(comands每行必须以tab键开始)。1、当ta

5、rget_file不存在的时候,检查dependency_files是否存在,如果存在则执行commands,如果不存在,则检查其他命令的target_file是否包含这个文件,如果有,则先执行其他命令,再回来执行commands,如果其他不包含,就报错。2、当target_file和dependency_files都存在,检查target_file是否比dependency_files新,否则需要执行commands。1.1指定文件编译在makefile中穷举所有需要编译的文件。CXX:=g++CXXFLAGS=-g-D_DEBUGINCL

6、UDE=-I./include/LIBS=LIB=SRC_PATH=./srcOBJ_PATH=./debugTARGET=makeTest.PHONY:allcleanall:$(TARGET)$(TARGET):$(OBJ_PATH)/main.o$(OBJ_PATH)/fun.o$(CXX)-o$(TARGET)$(OBJ_PATH)/fun.o$(OBJ_PATH)/main.o$(LIB)$(LIBS)$(OBJ_PATH)/fun.o:$(SRC_PATH)/fun.cpp$(CXX)$(CXXFLAGS)$(INCLUDE)-c

7、-o$(OBJ_PATH)/fun.o$(SRC_PATH)/fun.cpp$(OBJ_PATH)/main.o:$(SRC_PATH)/main.cpp$(CXX)$(CXXFLAGS)$(INCLUDE)-c-o$(OBJ_PATH)/main.o$(SRC_PATH)/main.cppclean:rm-f$(TARGET)$(OBJ_PATH)/*1.2自动化编译在makefile中使用正则表达式,自动编译相关文件,添加删除源文件也无需修改makefile。CXX:=g++CXXFLAGS=-g-D_DEBUGINCLUDE=-I./i

8、ncludeLIBS=LIB=SRC_PATH=./srcOBJ_PATH=./debugSRCS=$(wildcard$(SRC_PATH)/*.cpp)OBJS

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。