【linux基础之Makefile基础】教程文章相关的互联网学习教程文章

linux – 迭代Makefile中的列表?【代码】

我发现我正在编写很多可以使用n元组列表清理的Makefile.但是我找不到任何方法(干净利落地)做到这一点.到目前为止,我只能使用$(shell …)和tr,sed或其他非Makefile标准. 例如,我想这样做:XYZs = dog.c pull_tail bark duck.c chase quack cow.c tip mooall:@- $(foreach X Y Z,$(XYZs), $(CC) $X -o bully/$Y ; ln bully/$Y sounds/$Z ; )有没有一种在Makefile中迭代n元组列表的好方...

linux – Makefile中的$${HOME}或${HOME}?【代码】

$cat Makefile all:echo VAR is ${HOME}echo VAR is $${HOME}给$make echo VAR is /home/abc VAR is /home/abc echo VAR is ${HOME} VAR is /home/abc为什么echo VAR在Makefile中是${HOME}语法工作?我想,要使用shell变量你必须使用$${HOME}}解决方法:是的,不是.最好使用$$来明确.但是,there is a special rule for environment variables:Variables in make can come from the environment in which make is run. Every environ...

linux – Makefile:检查目录的写权限【代码】

有没有办法在Makefile规则中检查它是否有权写入指定的目录?这是我写的Makefile的一小部分:APP_NAME = electro CC = gcc C_FLAGS = -Wall LIB_DIR = lib SRC_DIR = src INST_DIR = /usr/bin INST_LIBDIR = /usr/lib LIBS = libcomponent.so libpower.so libresistance.so L_FLAGS = -lresistance -lpower -lcomponent.PHONY: liblib:@$(MAKE) --directory=$(LIB_DIR)install: $(SRC_DIR)/main.c lib(cd $(LIB_DIR); cp $(LIBS)...

具有多个子目录的Linux内核模块的Makefile【代码】

我需要有关内核模块的Makefile的帮助.即使是例子也会有很大的帮助. 目前我的模块代码在多个目录下.让我们说<MAIN-DIR> --- l2.c <SUB-DIR1> --- hello.c<SUB-DIR2> --- bye.c对于上面的场景,我如何编写我的makefile.因为构建l2模块我需要l2.o hello.o和bye.o.目前他们在多个目录中.解决方法:如果您正在构建内核树之外的模块,那么下面的简单makefile应该可以工作:MODULE_NAME = mymoduleSRC := foo.c src/bar.c# Path to targe...

在Makefile中,如何验证是否安装了所需的Linux软件包【代码】

下面的代码在ptxdist Makefile中工作,但是想知道是否有更好的解决方案来检查是否在继续构建之前安装了所有必需的软件包?ENV_VERIFICATION:@echo ------------START ENV VERIFICATION---------------if ! dpkg -s sudo | grep Status | grep -q installed; then echo ERROR: sudo package not installed!; exit 1; fiif ! dpkg -s scons | grep Status | grep -q installed; then echo scons package not in...

linux – 如何在makefile中使用导出的变量?【代码】

我有一个shell脚本的构建文件,它有一个变量VAR,必须导出到makefile. 在构建文件中if [ "$arg" == "something" ]; thenexport VAR=$argfi make现在在makefile中,我需要在条件语句中使用该变量:ifeq ( $(VAR),something)CONFIGURE_OPTIONS = abcdefelseCONFIGURE_OPTIONS = ghijklendif但是这种情况从未以这种方式检查过.我该如何使用这个导出的变量?解决方法:在shell脚本中,export VAR=hello make all在makefile中,all : ifeq ($(...

linux – 如何从Makefile中的Relative路径获取任何目录的Absolute PATH【代码】

我正在处理某些目录“DirA”中的Makefile.我需要另一个目录“DirB”的绝对路径,它位于不同的PATH.如何在Makefile中获取它. 下面使用bash脚本,如何在Makefile中获取相同的内容.SRCDIR = ./../../somepath/DirB ABS_PATH=$(realpath $(DirB))我也试过使用${CURDIR}:ABS_PATH = "${CURDIR}/../../somepath/DirB"但是,这又是一条相对的道路.解决方法:以下代码适用于从任何目录调用的Makefile:mkfile_path := $(abspath $(lastword $...

linux中makefile设置路径的问题

开始接触Makefile已经有好几个月了,最近想好好学习学习 但是一个简单的问题就卡壳了很简单的一个问题 |-- Makefile|-- include| `-- hello.h`-- src |-- hello.cpp `-- main.cp 首先是Makefile 文件和include文件夹还有src文件夹在同一个目录下 头文件hello.h在include目录下 源文件main.cpp和hello.cpp在src目录下 //////////////////////////////// hello.h: #ifndef _HELLO_H__ #define _HELLO_H__ void hello(); #end...

linux Makefile引用与环境变量【图】

一、Makefile中的引用 一个makefile中引用另一个makefile,其写法与C语言include 类似。 make 命令开始时,会搜寻 include 所包含的其它 Makefile,并把其内容安置在当前的位置。 使用隐晦规则来书写makefileinclude Makefile.hello run: main.o hello.o test.ogcc -o run main.o hello.o test.o .PHONY: clean clean:-rm run *.o Makefile.hellohello.o: hello.cgcc -c hello.c运行结果:root@chenwr-pc:/home/workspace/my_work...

Linux平台Makefile文件的编写基础篇 【转载】

目的: 基本掌握了 make 的用法,能在Linux系统上编程。环境: Linux系统,或者有一台Linux服务器,通过终端连接。一句话:有Linux编译环境。准备: 准备三个文件:file1.c, file2.c, file2.h file1.c: #include <stdio.h> #include "file2.h" int main() { printf("print file1$$$$$$$$$$$$$$$$$$$$$$$$\n"); ...

linux – 如何使makefile主机依赖?【代码】

我需要使用或不使用某些库来编译我的程序,具体取决于它运行的两个主机中的哪一个.我不知道在我的makefile中HOST =的右侧使用什么来使我的工作正如我所希望的那样:ifeq(${HOST},${ADDITIONAL_LIBS_HOST})ADD_LIBS= ... ${ADDITIONAL_LIBS_HOST}是获取的主机名称echo ${HOSTNAME}解决方法:一些想法: >这是GNU autoconf旨在解决的那种情况.运行./configure,找出可用的库,并生成适当的Makefile.>您可以通过执行以下操作获取当前主机...

在Linux上选择makefile和Makefile【代码】

我想在Makefile和makefile的目录中进行make.默认情况下,它将执行makefile.我可以做任何选项来执行Makefile吗? 提前致谢.解决方法:简单的选择是使用-f:$make -f Makefile从man 1 make(GNU make,我推测):If no -f option is present, make will look for the makefiles GNUmakefile, makefile, and Makefile, in that order.因此,您将Makefile链接到名称GNUmakefile.但我建议,如果你真的想要这个,就是使用别名:$alias make='make...

LINUX驱动Makefile模板【图】

原文链接:http://www.cnblogs.com/hnrainll/archive/2011/06/14/2080969.html网上有好多关于驱动的Makefile怎么写,驱动程序怎么运行,为什么驱动会没有main等等问题的问题的问题。下面我也给出我的驱动Makefile模板,这些东东都是在书籍和人家的研究成果上改进而来的,至于如何使用、怎么修改成自己的,大家就随意好了。驱动测试有两种方式,一为内核树之内,一为内核树以外,前者有点复杂,涉及到将驱动放到合适的内核树目录,修...

linux – Makefile无法理解评论【代码】

如果我在我的Makefile中添加注释(#…),make会给我一个错误并退出.如果我删除注释,makefile工作正常.Makefile:1: *** missing separator. Stop.>制作版:3.81> Linux:Ubuntu 9.04 Makefile:# Backup Makefile # # Create backups from various services and the system itself. This # script is used to perform single backup tasks or a whole backup # from the system. For more information about this file and how to # u...

linux – Bash片段在makefile中不起作用【代码】

我有一个版本文件verfile,其中包含以下版本字符串V1.1.2 在Makefile中我打算读取这个版本的字符串,所以我写了Makefile如下,filepath := $(PWD) versionfile := $(filepath)/verfileall:cat $(versionfile)version=$(shell cat $(versionfile))echo "version=$(version)"现在,当我运行make文件时,我得到了以下输出cat /home/ubuntu/ankur/verfile v1.1.2 version=v1.1.2 echo "version=" version=所以我无法在...