makefile
sunxiaopengsun
这个作者很懒,什么都没留下…
展开
-
对 makefile 中 .c.o 的理解
LIBS=gao.oall: $(LIBS) @echo "final".c.o: gcc -o $@ $< echo "in .c.o rule"执行 结果:gcc -o gao.o gao.cin .c.o rulefinal注意其中的 .c.o ,其实是 和 %o:%c 等价。是一个旧格式。所以 $@ 对应了 gao.o ,$< 对应了 gao.c ,不要弄反了。...原创 2022-03-22 20:48:12 · 1865 阅读 · 2 评论 -
cmake LINK_DIRECTORIES不起作用,报错的原因
ADD_EXECUTABLE(main main.cpp)TARGET_LINK_LIBRARIES(main libhello.so)INCLUDE_DIRECTORIES(/tmp/t3/include/hello /tmp/t3/lib)LINK_DIRECTORIES(/tmp/t3/lib)这种情况下会出错,说找不到引用,原因是ADD_EXECUTABLE出现在LINK_DIRECTORIES之前。正确的做法是将LINK_DIRECTORIES放在ADD_EXECUTABLE.原创 2022-02-02 19:22:15 · 1693 阅读 · 0 评论 -
cmake LINK_DIRECTORIES连接失败及编译器指定
# CMake 最低版本号要求cmake_minimum_required (VERSION 2.8)message("===============${CMAKE_CURRENT_SOURCE_DIR}")LINK_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/webrtc_audio)#LINK_DIRECTORIES(./webrtc_audio)set(CMAKE_C_COMPILER "/opt/hisi-linux/x86-arm/arm-hi.原创 2020-12-18 10:37:09 · 1188 阅读 · 0 评论 -
cmake使用示例与整理总结
https://blog.csdn.net/wzzfeitian/article/details/40963457转载 2020-12-14 13:39:10 · 90 阅读 · 1 评论 -
例说makefile 头文件查找路径
https://www.cnblogs.com/mfrbuaa/p/3983150.html转载 2020-12-14 10:36:21 · 377 阅读 · 0 评论 -
超详细的cmake教程
https://blog.csdn.net/zhuiyunzhugang/article/details/88142908转载 2020-12-08 21:25:47 · 242 阅读 · 0 评论 -
cmake用法及常用命令总结
https://www.cnblogs.com/ZY-Dream/p/11232779.html转载 2020-12-13 21:21:49 · 114 阅读 · 0 评论 -
Makefile 中的 $@, $^, $< , $? 符号
Makefile$@, $^, $<$@表示目标文件$^表示所有的依赖文件$<表示第一个依赖文件$?表示比目标还要新的依赖文件列表如一个目录下有如下文件:$ ls hello.c hi.c main.c Makefile按照 Makefile 规则规规矩矩的写:main: main.o hello.o hi.o gcc -o main main.o hello.o hi.o main.o: main.c ...原创 2020-12-13 21:01:22 · 796 阅读 · 0 评论 -
makefile中的patsubst
https://blog.csdn.net/srw11/article/details/7516712转载 2020-12-11 15:52:07 · 101 阅读 · 0 评论 -
Makefile教程(看着两个足以)
https://blog.csdn.net/weixin_38391755/article/details/80380786转载 2020-12-11 15:54:12 · 96 阅读 · 0 评论 -
makefile 视频教程
https://www.bilibili.com/video/BV1B4411F7EK?from=search&seid=6207972576970941356转载 2020-12-12 20:45:35 · 260 阅读 · 0 评论 -
跟我一起写 Makefile(五)
六、多目标Makefile的规则中的目标可以不止一个,其支持多目标,有可能我们的多个目标同时依赖于一个文件,并且其生成的命令大体类似。于是我们就能把其合并起来。当然,多个目标的生成规则的执行命令是同一个,这可能会可我们带来麻烦,不过好在我们的可以使用一个自动化变量“$@”(关于自动化变量,将在后面讲述),这个变量表示着目前规则中所有的目标的集合,这样说可能很抽象,还是看一个例子吧。原创 2017-03-15 11:59:23 · 192 阅读 · 0 评论 -
makefile %.o:%.c
下面这个例子表示了,把所有的[.c]文件都编译成[.o]文件.%.o : %.c$(CC) -c $(CFLAGS) $(CPPFLAGS) $原创 2018-01-29 10:15:40 · 3262 阅读 · 0 评论 -
makefile编译C++程序 gcc/g++区别
一个简单的C++程序和makefile文件,在执行make时候报错,下面是详细信息:下面是hello.cpp文件内容[cpp] view plain copy#include using namespace std; int main() { cout << "Hello World!\n"; } 下面是makefile文件内容 [plain]原创 2018-01-20 20:30:59 · 1193 阅读 · 0 评论 -
Makefile自动生成头文件依赖
前言Makefile自动生成头文件依赖是很常用的功能,本文的目的是想尽量详细说明其中的原理和过程。Makefile模板首先给出一个本人在小项目中常用的Makefile模板,支持自动生成头文件依赖。CC = gcc CFLAGS = -Wall -OINCLUDEFLAGS = LDFLAGS = OBJS = seq.oTARGETS = test_se原创 2018-01-20 21:55:37 · 404 阅读 · 0 评论 -
-g、-ggdb、-g3和-ggdb3之间的区别
-g和-ggdb之间只有细微的区别。 具体来说,-g产生的debug信息是OS native format, GDB可以使用之。而-ggdb产生的debug信息更倾向于给GDB使用的。 所以,如果你用的GDB调试器,那么使用-ggdb选项。如果是其他调试器,则使用-g。 3只是级别。这个级别会产生更多的额外debug信息。原创 2018-01-29 15:07:10 · 8846 阅读 · 0 评论 -
live555 编译动态库时遇到relocation R_X86_64_32 against `a local symbol'的错误
解决方法:将live555 四个库的makefile全部加上 -fPIC.$gcc -c hello.c$gcc -c main.c$gcc -shared -fPIC -o hello hello.o main.o.. relocation R_X86_64_32 against `a local symbol' can not be used whe原创 2018-02-05 16:15:26 · 942 阅读 · 0 评论 -
Makefile静态模式
静态模式 makefile中,一个规则中可以有多个目标,规则所定义的命令对所有的目标有效。一个具有多目标的规则相当于多个规则。使用多目标可以使makefile文件变得简洁。 静态模式规则是这样一个规则:规则存在多个目标,并且不同的目标可以根据目标文件的名字来自动构造出依赖文件。 静态模式可以更加容易地定义多目标的规则,可以让我们的规则变得更加的有弹性和灵活。我们还是先...原创 2018-02-22 10:34:36 · 327 阅读 · 0 评论 -
几个常用makefile模板(动态库、静态库、可执行程序)
1、编译动态库 ############################################################# # Makefile for shared library. # 编译动态链接库 ############################################################# ...原创 2018-02-23 09:28:38 · 2507 阅读 · 0 评论 -
GCC链接选项-L,-rpath-link和-rpath
OpenWrt中编译qtopia和qte2是会找不到uuid的库,需要特别地使用-luuid来指定,即使用-L$(dir) -luuid。然而如果使用-Wl,-rpath-link=$(dir)选项,则会自动搜索libuuid.so进行链接。GCC里的链接器的选项是 -rpath 和 -rpath-link,看了下 man ld,大致是这个意思:-L: “链接”的时候,去找的目录,也就是所有的 -...原创 2018-02-24 09:28:09 · 575 阅读 · 0 评论 -
Makefile 中$@ $^ $< 解释
http://bbs.chinaunix.net/thread-1596089-1-1.html给个例子你分析一下(来自国内开源项目g-bios)g-bios/app/net/Makefile--------------------------------------------------------------------------------------------------原创 2018-01-09 17:56:06 · 2501 阅读 · 0 评论 -
makefile 中的 指定库和头文件的路径
makefile中的指定头文件,源文件可以使用VPATH变量也可以使用vpath后者可以分类指定头文件源文件的搜索路径记住这样指定的路径仅仅是makefile本身查找头文件源文件的路径在执行makefile时,还要指定gcc/g++搜索头文件库文件的搜索路径-L //指定库文件搜索路径 -ltest//指定使用的动态库/静态库-I //指定搜索头文件的路径原创 2018-01-09 14:05:31 · 8681 阅读 · 0 评论 -
Makefile的简单编写
当我们的工程越来越大的以后,每次都使用命令编译显得非常的麻烦.所以我们需要一个自动化编译的工具来帮助我们编译.在我们使用源码安装软件的时候都会有make,make install等操作,这个就是使用Makefile来进行自动化编译的工作的.Makefile也是一个脚本文件和shell脚本非常的相似,但是也有很多的地方不一样.程序编译通常会有一下几个步骤,先是预编译,然后将C语言代码原创 2018-01-24 12:54:00 · 187 阅读 · 0 评论 -
跟我一起写 Makefile(九)
使用函数————在Makefile中可以使用函数来处理变量,从而让我们的命令或是规则更为的灵活和具有智能。make所支持的函数也不算很多,不过已经足够我们的操作了。函数调用后,函数的返回值可以当做变量来使用。一、函数的调用语法函数调用,很像变量的使用,也是以“$”来标识的,其语法如下: $( )或是 ${ }这里,就是函数原创 2017-03-15 12:02:32 · 216 阅读 · 0 评论 -
跟我一起写 Makefile(八)
六、多行变量 还有一种设置变量值的方法是使用define关键字。使用define关键字设置变量的值可以有换行,这有利于定义一系列的命令(前面我们讲过“命令包”的技术就是利用这个关键字)。define指示符后面跟的是变量的名字,而重起一行定义变量的值,定义是以endef关键字结束。其工作方式和“=”操作符一样。变量的值可以包含函数、命令、文字,或是其它变量。因为命令需要以[Tab]键原创 2017-03-15 12:01:41 · 320 阅读 · 0 评论 -
跟我一起写 Makefile(七)
使用变量————在Makefile中的定义的变量,就像是C/C++语言中的宏一样,他代表了一个文本字串,在Makefile中执行的时候其会自动原模原样地展开在所使用的地方。其与C/C++所不同的是,你可以在Makefile中改变其值。在Makefile中,变量可以使用在“目标”,“依赖目标”,“命令”或是Makefile的其它部分中。变量的命名字可以包含字符、数字,下划线(可以原创 2017-03-15 12:01:10 · 199 阅读 · 0 评论 -
跟我一起写 Makefile(六)
书写命令————每条规则中的命令和操作系统Shell的命令行是一致的。make会一按顺序一条一条的执行命令,每条命令的开头必须以[Tab]键开头,除非,命令是紧跟在依赖规则后面的分号后的。在命令行之间中的空格或是空行会被忽略,但是如果该空格或空行是以Tab键开头的,那么make会认为其是一个空命令。我们在UNIX下可能会使用不同的Shell,但是make的命令默认是被“/bin原创 2017-03-15 12:00:29 · 308 阅读 · 0 评论 -
跟我一起写 Makefile(四)
书写规则————规则包含两个部分,一个是依赖关系,一个是生成目标的方法。在Makefile中,规则的顺序是很重要的,因为,Makefile中只应该有一个最终目标,其它的目标都是被这个目标所连带出来的,所以一定要让make知道你的最终目标是什么。一般来说,定义在Makefile中的目标可能会有很多,但是第一条规则中的目标将被确立为最终的目标。如果第一条规则中的目标有很多个,那么,原创 2017-03-15 11:58:46 · 213 阅读 · 0 评论 -
跟我一起写 Makefile(三)
Makefile 总述———————一、Makefile里有什么?Makefile里主要包含了五个东西:显式规则、隐晦规则、变量定义、文件指示和注释。1、显式规则。显式规则说明了,如何生成一个或多的的目标文件。这是由Makefile的书写者明显指出,要生成的文件,文件的依赖文件,生成的命令。2、隐晦规则。由于我们的make有自动推导的功能,所以隐晦的规则可以让我原创 2017-03-15 11:58:09 · 423 阅读 · 0 评论 -
跟我一起写 Makefile(二)
三、make是如何工作的在默认的方式下,也就是我们只输入make命令。那么, 1、make会在当前目录下找名字叫“Makefile”或“makefile”的文件。 2、如果找到,它会找文件中的第一个目标文件(target),在上面的例子中,他会找到“edit”这个文件,并把这个文件作为最终的目标文件。 3、如果edit文件不存在,或是edit所依赖的后面的原创 2017-03-15 11:57:35 · 277 阅读 · 0 评论 -
跟我一起写 Makefile(一)
跟我一起写 Makefile 陈皓概述——什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就原创 2017-03-15 11:56:35 · 398 阅读 · 0 评论 -
跟我一起写 Makefile(十)
四、foreach 函数 foreach函数和别的函数非常的不一样。因为这个函数是用来做循环用的,Makefile中的foreach函数几乎是仿照于Unix标准Shell(/bin/sh)中的for语句,或是C-Shell(/bin/csh)中的foreach语句而构建的。它的语法是: $(foreach ,,) 这个函数的意思是,把参数中的原创 2017-03-15 12:03:42 · 201 阅读 · 0 评论 -
跟我一起写 Makefile(十一)
make 的运行——————一般来说,最简单的就是直接在命令行下输入make命令,make命令会找当前目录的makefile来执行,一切都是自动的。但也有时你也许只想让make重编译某些文件,而不是整个工程,而又有的时候你有几套编译规则,你想在不同的时候使用不同的编译规则,等等。本章节就是讲述如何使用make命令的。一、make的退出码make命令执行后有三个退出码:原创 2017-03-15 12:04:45 · 179 阅读 · 0 评论 -
一个makefile实例
转载地址:点击打开链接Makefile 文件的编写学习前的准备需要准备的工程目录结构如下:.├── add│ ├── add_float.c│ ├── add.h│ └── add_int.c├── main.c└── sub ├── sub_float.c ├── sub.h └── sub_int.c文件编译为可执行文转载 2018-01-24 12:31:28 · 262 阅读 · 0 评论 -
Ubuntu命令卸载软件
转载地址: 点击打开链接关于Makefile中的include命令,网上有很多介绍,比较普遍的说法是:Makefile中的include命令与C语言中的include命令类似,命令include file.dep,即把file.dep文件在当前Makefile文件中展开,亦即把file.dep文件的内容包含进当前Makefile文件;如果Makefile中有以file.dep为目标的规则,ma转载 2021-08-19 13:56:02 · 98 阅读 · 0 评论 -
Makefile中的include命令详解
转载地址: 点击打开链接关于Makefile中的include命令,网上有很多介绍,比较普遍的说法是:Makefile中的include命令与C语言中的include命令类似,命令include file.dep,即把file.dep文件在当前Makefile文件中展开,亦即把file.dep文件的内容包含进当前Makefile文件;如果Makefile中有以file.dep为目标的规则,ma原创 2018-01-21 13:09:21 · 4086 阅读 · 1 评论 -
makefile 调用其他makefile文件
|-- Makefile|-- test1| |-- Makefile| |-- bin| | `-- test| |-- hello.o| |-- include| | `-- hello.h| `-- src| `-- hello.c`-- test2 |-- Makefile |--原创 2018-01-21 12:55:06 · 1561 阅读 · 0 评论 -
CMake使用教程
CMake是一个比make更高级的编译配置工具,它可以根据不同平台、不同的编译器,生成相应的Makefile或者vcproj项目。通过编写CMakeLists.txt,可以控制生成的Makefile,从而控制编译过程。CMake自动生成的Makefile不仅可以通过make命令构建项目生成目标文件,还支持安装(make install)、测试安装的程序是否能正确执行(make test,或者c原创 2017-06-20 21:25:17 · 376 阅读 · 0 评论 -
跟我一起写 Makefile(十四)
使用make更新函数库文件———————————函数库文件也就是对Object文件(程序编译的中间文件)的打包文件。在Unix下,一般是由命令"ar"来完成打包工作。一、函数库文件的成员一个函数库文件由多个文件组成。你可以以如下格式指定函数库文件及其组成: archive(member)这个不是一个命令,而一个目标和依赖的定义。一般来说,这种用法基本上就是为了"ar"原创 2017-03-15 12:07:35 · 194 阅读 · 0 评论 -
跟我一起写 Makefile(十三)
五、定义模式规则你可以使用模式规则来定义一个隐含规则。一个模式规则就好像一个一般的规则,只是在规则中,目标的定义需要有"%"字符。"%"的意思是表示一个或多个任意字符。在依赖目标中同样可以使用"%",只是依赖目标中的"%"的取值,取决于其目标。有一点需要注意的是,"%"的展开发生在变量和函数的展开之后,变量和函数的展开发生在make载入Makefile时,而模式规则中的"%"则发生原创 2017-03-15 12:06:16 · 227 阅读 · 0 评论