GNU make工具详解与Makefile编写指南

需积分: 36 0 下载量 117 浏览量 更新于2024-09-18 收藏 1.34MB PDF 举报
"GNUmake中文手册,ver-3.8,由徐海兵翻译整理,旨在为中文用户详细解读GNU make工具及其使用。手册涵盖了GNU make的概述、基本用法、Makefile的编写等内容,包括Makefile规则、变量、自动推导、目录搜索、伪目标等多个方面,所有示例均能在支持V3.8版本的GNU make系统中运行。" GNU make是一个强大的自动化构建工具,广泛用于软件开发中,帮助程序员自动化编译、链接等过程。本手册详细介绍了GNU make的各个方面: 1. **概述**:介绍了学习GNU make的基础知识,包括为何需要make以及它的基本功能。 2. **GNU make介绍**:讲解了Makefile的基本结构,如Makefile规则、目标和依赖关系。简单的示例展示了如何编写一个基本的Makefile,使读者理解make是如何工作的。 3. **Makefile规则**:深入讨论了规则的定义和语法,包括不同类型的依赖、通配符的使用(例如,`*`和`?`)、目录搜索功能(通过`VPATH`和`vpath`)以及特殊目标如`.PHONY`和`.SILENT`。 4. **变量**:说明了如何在Makefile中定义和使用变量,包括预定义的变量和用户自定义变量,以及变量的赋值和扩展规则。 5. **自动推导规则**:解释了如何利用make的自动推导功能,简化Makefile的编写,使得make能自动识别源文件和目标文件之间的关系。 6. **包含其他makefile文件**:讲述了如何在一个Makefile中包含其他文件,以实现Makefile的模块化和复用。 7. **特殊变量和makefile解析**:提到了一些特殊变量,如`MAKEFILES`和`MAKEFILE_LIST`,并解释了make如何解析和处理Makefile文件,包括变量的取值、条件语句和规则定义的过程。 8. **目录搜索和隐含规则**:详细讨论了如何通过目录搜索功能找到源文件,并结合隐含规则(如编译C++代码时的预处理、编译和链接步骤)进行自动化构建。 9. **静态模式规则**:介绍了静态模式规则,这是一种更灵活的规则定义方式,可以更有效地处理一组相关的目标文件。 通过本手册,Linux程序员将能够熟练地使用GNU make来组织和自动化他们的项目构建流程,提升工作效率。无论是初学者还是有经验的开发者,都能从中受益,更好地理解和运用GNU make的高级特性。
2023-06-11 上传

CMake Error at /home/sniper/anaconda3/envs/yolov8/lib/python3.8/site-packages/cmake/data/share/cmake-3.25/Modules/CMakeTestCCompiler.cmake:70 (message): The C compiler "/usr/bin/gcc" is not able to compile a simple test program. It fails with the following output: Change Dir: /opt/projects/tensorrt-alpha/yolov8/build/CMakeFiles/CMakeScratch/TryCompile-TrXrKM Run Build Command(s):/usr/bin/make -f Makefile cmTC_7d457/fast && /usr/bin/make -f CMakeFiles/cmTC_7d457.dir/build.make CMakeFiles/cmTC_7d457.dir/build make[1]: 进入目录“/opt/projects/tensorrt-alpha/yolov8/build/CMakeFiles/CMakeScratch/TryCompile-TrXrKM” Building C object CMakeFiles/cmTC_7d457.dir/testCCompiler.c.o /usr/bin/gcc --sysroot=/usr/ -march=x86-64 -o CMakeFiles/cmTC_7d457.dir/testCCompiler.c.o -c /opt/projects/tensorrt-alpha/yolov8/build/CMakeFiles/CMakeScratch/TryCompile-TrXrKM/testCCompiler.c Linking C executable cmTC_7d457 /home/sniper/anaconda3/envs/yolov8/lib/python3.8/site-packages/cmake/data/bin/cmake -E cmake_link_script CMakeFiles/cmTC_7d457.dir/link.txt --verbose=1 /usr/bin/gcc --sysroot=/usr/ -march=x86-64 -Wl,-O2 -Wl,--sort-common -Wl,--as-needed -Wl,-z,relro -Wl,-z,now -Wl,--disable-new-dtags -Wl,--gc-sections -Wl,-rpath,/home/sniper/anaconda3/lib -Wl,-rpath-link,/home/sniper/anaconda3/lib -L/home/sniper/anaconda3/lib CMakeFiles/cmTC_7d457.dir/testCCompiler.c.o -o cmTC_7d457 /usr/bin/ld: 找不到 /lib/x86_64-linux-gnu/libc.so.6 于 /usr/ 内部 /usr/bin/ld: 找不到 /usr/lib/x86_64-linux-gnu/libc_nonshared.a 于 /usr/ 内部 /usr/bin/ld: 找不到 /lib/x86_64-linux-gnu/ld-linux-x86-64.so.2 于 /usr/ 内部 collect2: error: ld returned 1 exit status make[1]: *** [CMakeFiles/cmTC_7d457.dir/build.make:99:cmTC_7d457] 错误 1 make[1]: 离开目录“/opt/projects/tensorrt-alpha/yolov8/build/CMakeFiles/CMakeScratch/TryCompile-TrXrKM” make: *** [Makefile:127:cmTC_7d457/fast] 错误 2 CMake will not be able to correctly generate this project. Call Stack (most recent call first): CMakeLists.txt:25 (PROJECT) -- Configuring incomplete, errors occurred!

2023-06-02 上传