0
A
回答
1
如果你正在编写某些应用程序时,你可能会做
KERNELVERSION=$(shell uname -a)
或其他一些shell命令,也许cat /proc/version
对于一个内核模块,看cnicutar's answer。
1
KVER = $(shell uname -r)
KMAJ = $(shell echo $(KVER) | \
sed -e 's/^\([0-9][0-9]*\)\.[0-9][0-9]*\.[0-9][0-9]*.*/\1/')
KMIN = $(shell echo $(KVER) | \
sed -e 's/^[0-9][0-9]*\.\([0-9][0-9]*\)\.[0-9][0-9]*.*/\1/')
KREV = $(shell echo $(KVER) | \
sed -e 's/^[0-9][0-9]*\.[0-9][0-9]*\.\([0-9][0-9]*\).*/\1/')
kver_ge = $(shell \
echo test | awk '{if($(KMAJ) < $(1)) {print 0} else { \
if($(KMAJ) > $(1)) {print 1} else { \
if($(KMIN) < $(2)) {print 0} else { \
if($(KMIN) > $(2)) {print 1} else { \
if($(KREV) < $(3)) {print 0} else { print 1 } \
}}}}}' \
)
ifeq ($(call kver_ge,3,8,0),1)
echo great or equal than 3.8.0
else
echo less than 3.8.0
endif
+0
你能用几句话解释你的代码吗? – 2015-03-17 07:57:04
0
我没有50的声誉,所以我不能回答评论voght先生的评论(给予好评我,所以我能!),但我只是作为另一个答案做到这一点,所以这里去。
该代码使用壳内置掏出(的bash)命令,如UNAME和回声,并分配可变类宏如KVER
到结果中。 uname提供了内核版本,代码继续使用unix sed(流编辑器; man sed了解更多)从结果中提取每个主要,次要和转数,并将它们分配给离散变量像宏。然后,他指定一个宏名,kver_ge
来测试内核版本是否比作为参数提供的一个更大的过程(使用AWK,测试和如果 shell内置)。 很酷,适合我。
相关问题
- 1. Linux makefile检查所需的最小Linux内核版本
- 2. 检查G ++版本的Makefile
- 3. 检查makefile中的java版本
- 4. 如何获得无内核版本的内核版本
- 5. 在内核模块makefile中提及gcc版本
- 6. 如何在Docker中检测容器内核版本
- 7. 如何在内核模块中打印linux内核版本号
- 8. 如何确定Makefile中的python版本?
- 9. 用于基本内核模块的Makefile
- 10. Makefile中有多个内部版本
- 11. 如何测试Linux内核版本
- 12. 如何检查Vala中的gtk版本?
- 13. 如何检查LS版本
- 14. 如何检查版本号?
- 15. 如何检查libpng版本
- 16. 如何检查Spark版本
- 17. 如何检查NHibernate版本?
- 18. 如何检查enyo版本?
- 19. SAP内核版本的SAP
- 20. CentOS的Linux内核版本
- 21. Makefile中的Shell脚本条件检查
- 22. 内核模块的Makefile
- 23. 如何在Java中检查Windows版本?
- 24. 如何从Ruby中检查RVM版本?
- 25. 如何在wix中检查sql版本
- 26. 如何在OpenSUSE中检查lxml版本
- 27. 如何检查引导程序(wix)中版本检查的condtiotion?
- 28. 如何在Makefile中选择查找qcc版本?
- 29. 如何知道发行版使用的Linux内核版本?
- 30. 检查浏览器内的JRE版本
我该如何comapre相同,并确认它在MAKEFILE? – codingfreak 2013-02-27 11:52:40