Chinaunix首页 | 论坛 | 博客
  • 博客访问: 330365
  • 博文数量: 64
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 589
  • 用 户 组: 普通用户
  • 注册时间: 2012-11-08 15:50
文章分类

全部博文(64)

文章存档

2015年(52)

2014年(3)

2013年(9)

我的朋友

分类: LINUX

2015-06-10 14:12:56

在开发过程中,获取同一系统信息时,需要根据系统是MIPS架构还是X86架构来使用不同的代码,要解决这种情况就需要在编译时,在makefile中根据系统架构来使用宏开关,以下是在makefile中使用shell语句判断架构的代码:
UVAL = $(shell uname -a)                    //使用shell的uname命令获取系统信息
......
%.o:%.c
        @if [[ "$(UVAL)" =~ "mips" ]];\                                        //使用shell判断系统信息中是否包含mips信息,如果有则说明是mips架构,在makefile中shell语句应该是在一行中,所以分行的话需要指定\说明是一行
        then\
                echo "FOUND";\
                $(cc) -c $< -o $@  $(cflags) $(option) $(inc) -DMIPS_CPU;\        //mips架构的系统在编译时定义宏MIPS_CPU
        else\
                echo "NOT FOUND";\
                $(cc) -c $< -o $@  $(cflags) $(option) $(inc);\
        fi


在需要使用宏MIPS_CPU的代码处使用以下开关:
#ifdef MIPS_CPU
    //执行MIPS架构的代码
#else
    //执行其他架构的代码
#endif

阅读(1649) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~