首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

C编译: makefile基础

编译一个大型项目的时候,往往有很多目标文件、库文件、头文件以及最终的可执行文件。不同的文件之间存在依赖关系(dependency)。...依赖关系 在我们编译一个大型项目时,我们往往要很多次的调用编译器,来根据依赖关系,逐步编译整个项目。这样的方式是自下而上的,即先编译下游文件,再编译上游文件。...我们不用输入大量的"gcc"命令,而只需调用make就可以完成整个编译过程。所有的依赖关系都记录在makefile文本文件中。...make会自动搜索当前目录下的makefile, Makefile或者GNUmakefile) ?...总结 make的核心功能是根据依赖关系来实现编译管理。 make的其他功能是让用户可以更加便捷的写出makefile

1.1K100

Linux 编译动态库_makefile编译动态库

生成动态链接库 生成动态链接库的命令比较简单: 2.1 使用-shared 告诉编译器生成一个动态链接库 2.2 使用选项-fPIC或者-fpic,使得生成的代码与位置无关 gcc -shared -Wl...使用动态链接库 在编译程序的时候,使用动态链接库和静态链接库是一致的, 使用“-l库名”的形式,编译器在生成可执行文件的时候会链接该链接库文件。..../ -lstr -L : 指定链接动态库的路径 -lstr : 制定链接的动态库名称 这里需要注意的是: 编译的链接动态库和运行的动态链接库并不一致。...思路如下: 在某个特定目录放不同模块编译生成的动态库; 程序中遍历该目录下所有的符合条件的动态库,然后打开动态库获取相关函数(例如module_init()),一般为模块的注册或者初始化函数,完成相应模块的加载或初始化操作

6K20

makefile 编译参数_gcc使用说明

gcc编译源文件共有4个过程,预处理、编译、汇编、链接。...预处理: 命令:gcc -E test.c -o test.i (-o后面指定生成文件的命名) 过程:展开宏定义(#define),处理编译条件指令(#if #ifndef等),插入引用的头文件(...结果:生成.i文件,一般的文本编辑器都能打开 编译: 命令:gcc -S test.i -o test.s 过程:词法分析,语法分析,语义分析,生成相应的汇编代码 结果:生成.s文件,一般的文本编辑器都能打开...,可以分步编译,也可以使用gcc test.c -o test直接生成可执行文件。...将多个源文件编译输出时,需要一起进行gcc编译,可利用Makefile文件来实现。 分步编译如下: 最后得到main可执行文件,在cmd命令窗口下输入main+回车,即可运行main可执行文件。

43820

我能看懂的MakeFile(自命名,多文件,多目标

我们的目标文件(就是拿来运行的那个)其实就是通过文件之间的依赖关系,对源文件进行编译而得到的,但是这个依赖关系系统不知道,所以需要我们告诉系统。Makefile就是一种很优秀的方法。...其中有两个小技巧, 1、比方说你要生成a.o,那么你可以不用写a.h,Makefile会自动推导规则。如果你的a.cpp只需要一个a.h的头文件,那么这个依赖你可以省了。...2、本来每个依赖下面都需要一步编译步骤,不过也可以省略不写,所以我就不说是什么了,自动推导。 下面那个clean,也是一个伪目标。...然后再讲一点,给Makefile命名。 如果你不想你的Makefile文件都叫Makefile,可以自己起个名字。

94530

使用autoconf生成Makefile编译工程的步骤

前言 在Linux下,编译和链接需要用Makefile,而写好一个Makefile可不容易,写出一个规范的Makefile更是麻烦。...我们可以利用autoconf来生成一个Makefile,尤其在大型工程里,能省去很多麻烦。...AC_OUTPUT(Makefile) 保存,并将configure.scan重命名为configure.ac 新建Makefile.am gedit Makefile.am 输入以下代码 AUTOMAKE_OPTIONS...src/main_code.c AUTOMAKE_OPTIONS后面是automake的执行选项,用空格隔开; foreign指的是只检测必须的文件; subdir-objects指的是编译生成的...别人下载了我们的源码包之后怎么编译链接可执行文件呢?或者说我们怎么编译链接我们的可执行文件呢? 以下是源码安装的一般步骤,也是我们编译链接的步骤 首先生成Makefile .

1K30

makefile-rpm编译软件,输出依赖软件包的编译顺序

很头痛的一个问题就是整理软件包的依赖关系、确定它们的编译顺序。    ...在打包编译的时候需要知道软件包的编译顺序,本来可以通过编程建立不同软件包的依赖关系树的,应该是从叶子节点依次往上层节点编译,直至根节点吧。...但是用C语言或者C++编写起来需要不少时间,毕竟需要构建树这种数据结构,最后师傅告诉我一个简单的方法:使用Make的自动功能实现软件包编译顺序的确定,编写一个Makefile就能轻松实现。...要得到他们编译的顺序,那么对应的Makefile可以这样写: all: a b c d e f g h i j k l m n @echo $@ a: b c d e @echo $@...,如下: l f m n g b h c i j d k e a all        当然以上输出的软件编译顺序也不是绝对的,只不过是其中的一个方案而已,如果编译依赖没问题的话

1.5K20

Nginx编译配置脚本篇(10)- Makefile相关脚本

Nginx编译配置脚本篇(10)- Makefile相关脚本 1、相关文章 2、前言 3、auto/make脚本文件详解 3.1、输出调试信息表示创建objs/Makefile文件 3.2、创建存放目标文件的目录...3.3、设置ngx_objs_dir和ngx_use_pch 3.4、输出编译参数相关信息到objs/Makefile文件中 3.5、根据NGX_PERL_CFLAGS输出信息到objs/Makefile...objs/Makefile文件中 3.9、生成ngx_all_objs变量 3.10、生成与目标文件相关的诸多变量 3.11、生成编译目标 3.12、生成编译所需的各个子目标 3.13、小结 4、auto...模块 Nginx配置编译脚本篇(1)- 解析配置选项脚本auto/options Nginx编译配置脚本篇(2)- Makefile初始化脚本auto/init Nginx编译配置脚本篇(3)- 源码相关变量脚本...文件 从之前的内容我们可以知道,我们一直操作的是objs/Makefile文件,但是我们最终编译时,是在源代码的根目录下进行编译的,所以肯定存在一个主Makefile来调用子目录的Makefile文件的

2.2K40

【开发环境】Windows 系统中使用 Makefile 构建脚本编译 C 程序 ( 下载并安装 TDM-GCC 编译器 | 配置环境变量 | 编译 Makefile 程序 )

文章目录 一、下载 TDM-GCC 编译器 二、安装 TDM-GCC 编译器 三、配置环境变量 四、根据 Makefile 脚本编译 C 程序 一、下载 TDM-GCC 编译器 ---- 下载并安装 TDM-GCC...编译器 : 下载地址 : https://jmeubank.github.io/tdm-gcc/ 点击 Read more… 链接 , 跳转到 https://jmeubank.github.io/...这个文件放在 CSDN 里了 , 可以 0 积分下载 ; 下载地址 : https://download.csdn.net/download/han1202012/24318929 二、安装 TDM-GCC 编译器...安装后的 bin 目录如下 ; 将上述 bin 目录 D:\001_Develop\020_TDM-GCC-64\bin 配置到环境变量中 ; 这个环境变量是安装完毕后自动配置进去的 ; 四、根据 Makefile...脚本编译 C 程序 ---- 使用如下命令编译程序 : mingw32-make -f Makefile.mingw

1.8K10

cmake 生成Makefile时指定cc++编译

https://blog.csdn.net/10km/article/details/50444715 linux下在使用cmake生成Makefile的时候,如果不指定编译器,则默认是使用系统原生的编译器..., 当操作系统中安装了新的版本的编译器,多个版本编译器共存的时候,如果想使用新版本的编译器,在cmake生成Makefile的时候就需要指定编译器。...不论环境变量$PATH怎么设置,cmake在生成Makefile时,如果不指定编译器,生成的Makefile都会调用/usr/bin下的g++/gcc。 所以这种情况下必须指定编译器。...在这里填写指定c/c++编译器的路径 ? shell脚本 那么如果要在脚本中调用cmake生成Makefile时,应该如何写脚本呢? #!...如果不指定,可以正常用make编译,但eclipse下不能对项目工程进行编译和配置。

6.9K10

conan入门(二十六):使用make编译erpcerpcgen(makefile)

conan 使用make编译erpc/erpcgen(makefile) conan是个包管理工具,不仅仅支持cmake编译,还支持很多常用的构建工具如configure/make,msbuild,VisualStudo...eRPC编译器(erpcgen)而设计,使用了AutoToolsBuildEnvironment对象基于命令执行make来编译项目, conanfile-erpcgen.py conanfile-erpcgen.py...,只能用MinGW编译器。...在Windows编译时需要依赖MSYS2提供的bash shell环境,而msys2/cci.latest本身也提供了默认MinGW编译器,这有可能与你当前系统安装的编译版本不同,所以需要要通过环境变量.../.conan/profiles下增加一下支持MinGW编译的profile文件,如下: profiles/mingw # 此profile文件假设已经将MinGW编译器bin文件夹添加到了Windows

91630

如何通过Makefile优化加速编译过程提高开发效率

在这种情况下,优化Makefile可以帮助我们加速编译过程,以下是一些Makefile优化的建议 --- 使用多线程编译 使用多线程编译是一种提高编译速度的有效方法。...--- 避免重复编译 当我们修改了代码中的某些文件时,只有与这些文件相关联的目标文件需要重新编译。因此,在Makefile中,我们可以使用依赖关系来避免重复编译。...这样可以减少编译时间,提高代码的编译速度。 预编译头文件的使用也很简单。在Makefile中,我们可以使用"-include"选项来包含预编译头文件。...--- 总结 通过以上建议,我们可以优化Makefile,加速编译过程,提高开发效率。优化Makefile的方法有很多,比如: 使用多线程编译,可以同时编译多个文件,加快编译速度。...避免重复编译,让Makefile可以自动判断哪些文件需要重新编译

52000

Makefile】简单的Makefile编写

Makefile编写 程序的编译和链接 使用C、C++编写可执行文件,首先要把源文件编译成中间代码文件,Linux下是.o文件,即Object File,这个动作叫做编译(complie)。...于是Makefile闪亮登场。 Makefile确定整个工程的编译规则,只需要一个make命令,就可以实现“自动化编译”。...---- Make工作原理 通常在一个项目中,我们的规则是: 如果这个工程没有被编译过,那么我们的所有C文件都要编译并被链接。...(链接目标程序) 只要我们的Makefile写的够好,我们只用一个make命令就可以完成,make命令会自动智能地根据当前文件的修改情况来确定哪些文件需要重新编译,从而自己编译需要的文件和链接生成可执行文件...这就是Makefile的规则,也就是Makefile中最核心的内容。

93910

makefile

前言 这几天的实验让我觉得有必要学习一下makefile 参考博客:博客 会不会写makefile,从一个侧面说明了一个人是否具有完成大型工程的能力 makefile带来的好处是自动化编译 规则...一直套娃下去 最终生成可执行文件 在找寻的过程中,如果出现错误,比如最后被依赖的文件找不到,那么make就会直接退出,并报错,而对于所定义的命令的错误,或是编译不成功,make根本不理。...的文件系统 如果你不想使用makefile或者Makefile的文件名,可以用make -f file,file是你的文件名。...可以自动生成.c文件对于头文件的依赖性,如: cc -M main.c 等价于: main.o : main.c defs.h defs.h是main.c中包含的头文件 命令 @echo 正在编译xxx...如果echo前没有@,那么会显示echo 正在编译xxx模块,加上@后则不会显示echo 如果你希望上一条命令作用于下一条命令,那么两个命令应该在同一行且用分号分隔: cd /home/file;pwd

1K20
领券