linux 未声明的变量,linux – Makefile变量替换显然没有完成,即使:=在声明中使用...

news/2024/8/26 17:39:19 标签: linux 未声明的变量

我有一个主内核模块,其他内核模块与之通信.我已经构建了这样的模块(概念上):

main module/

|

\drivers/

|

|\driver1

|\driver2

\driver3

由于这些是内核模块,我需要像这样编译它们:

make -C /lib/modules/$(shell uname -r)/build M=$(shell pwd) modules

但是,由于可以从以前的目录调用驱动程序的Makefile,我需要在调用其他make(linux的make)之前执行$(shell pwd).所以Makefile现在看起来像这样:

CURRENT_DIR := $(shell pwd)

.PHONY: all

all:

$(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(CURRENT_DIR) modules

到目前为止它很好,它完美地运作.问题是:我有一个驱动程序需要包含的文件,所以我必须给出包含路径.我第一次尝试

EXTRA_CFLAGS += -I../..

并立即明白为什么它不起作用(相对路径将是/ lib / module / …不是当前目录).所以我改成了:

MAIN_MODULE_HOME := $(CURRENT_DIR)/../..

EXTRA_CFLAGS += -I$(MAIN_MODULE_HOME)

奇怪的是,这不起作用!如果我写

EXTRA_CFLAGS += -Ipath/I/get/from/pwd/../..

手动,它编译!谁能解释我做错了什么?在调用make之前,我回显$(CURRENT_DIR)和$(MAIN_MODULE_HOME)并且变量是有意义的.

我知道EXTRA_CFLAGS没有立即评估,但由于CURRENT_DIR和MAIN_MODULE_HOME被声明为:=我不明白事情是如何搞砸的.

(如果有人能更好地说出问题标题,请做!)


http://www.niftyadmin.cn/n/1593630.html

相关文章

Netty编解码开发+多协议开发和应用+源码,基础和进阶的区别

第3章Netty入门应用 Netty开发环境的搭建 服务端程序TimeServer开发 客户端程序TimeClient开发 时间服务器的运行和调试 第4章TCP粘包/拆包问题的解决之道 TCP粘包/拆包的基础知识 没考虑TCP粘包/拆包的问题案例 使用Netty解决读半包问题 第5章分隔符和定长解码器的应用…

linux screen多用户,Linux 技巧:使用 Screen 管理你的远程会话

管理你的远程会话先来看看如何使用screen解决SIGHUP问题,比如现在我们要ftp传输一个大文件。如果按老的办法,SSH登录到系统,直接ftp命令开始传输,之后。。如果网络速度还可以,恭喜你,不用等太长时间了&…

Redis从入门到精通,至少要看看这篇,java开发面试常见问题

例: SCAN 0 MATCH test* COUNT 10 //每次返回10条以test为前缀的key 如何通过 Redis 实现分布式锁 分布式锁 分布式锁是控制分布式系统之间共同访问共享资源的一种锁的实现。如果一个系统,或者不同系统的不同主机之间共享某个资源时,往往…

intel linux核显性能,Intel处理器核显获神油优化 Linux下性能提升20%

日前报道过有程序员在Linux系统上玩上了魔兽世界、DOTA2、CSGO等Windows系统下的游戏,性能还不错。不过相对Windows系统来说,Linux下玩游戏总体上还是有点难度的,图形显卡驱动就是个问题,性能普遍不如Win系统,好消息是…

Linux下tomcat服务

一:Linux下tomcat服务的启动、关闭与错误跟踪,使用PuTTy远程连接到服务器以后,通常通过以下几种方式启动关闭tomcat服务:切换到tomcat主目录下的bin目录(cd usr/local/tomcat/bin)1,启动tomcat服…

Redis缓存穿透、缓存雪崩、Redis并发问题分析,使用Docker部署Spring-Boot项目

bloomfilter就类似于一个hash set,用于快速判某个元素是否存在于集合中,其典型的应用场景就是快速判断一个key是否存在于某容器,不存在就直接返回。布隆过滤器的关键就在于hash算法和容器大小,下面先来简单的实现下看看效果&#…

linux配置nginx cdn,用Nginx做静态文件的CDN

鉴于监管环境和网站速度之间的矛盾,目前的网络架构方式如下:1、web动态页面(含数据库)架设在位于美国西海岸的数据中心;2、静态文件,例如css、js、exe、图片存放在国内几台windows服务器上。如果你的网站是商用、盈利性的网站&…

Android SlidingTabLayout定制分割线和指示条颜色

Android SlidingTabLayout定制分割线和指示条颜色 Android SlidingTabLayout默认的滑动指示条是系统默认的某个蓝色系色值,分割线是灰色。如果要自定义实现滑动指示条和分割线定制颜色,则主要通过SlidingTabLayout的setCustomTa…