当前位置:  技术问答>linux和unix

大家来帮我看一下这个makefile

    来源: 互联网  发布时间:2016-06-20

    本文导语:  最近在学makefile,身边没朋友可以问,只能发帖求助了。。 CC=$(CROSS_COMPILE)gcc AR=$(CROSS_COMPILE)ar OBJS = mxc_ipu_lib.o LIBNAME=libipu all: $(LIBNAME).so $(LIBNAME).a install: @mkdir -p $(DEST_DIR)/usr/lib         cp $(LIBNAME).* $(DEST_DIR)/u...

最近在学makefile,身边没朋友可以问,只能发帖求助了。。

CC=$(CROSS_COMPILE)gcc
AR=$(CROSS_COMPILE)ar
OBJS = mxc_ipu_lib.o
LIBNAME=libipu
all: $(LIBNAME).so $(LIBNAME).a
install:
@mkdir -p $(DEST_DIR)/usr/lib
        cp $(LIBNAME).* $(DEST_DIR)/usr/lib
$(LIBNAME).a: $(OBJS)
$(AR) -rc $@ $^
$(LIBNAME).so: $(OBJS)
$(CC) -shared -nostartfiles -Wl,-soname,$@ -o $@ $^
%.o: %.c


ifeq "$(PLATFORM)" ""        
#这个PLATFORM值是从哪来?是make命令的时候输入make "PLATFORM = xxxxx"??

$(error "Unspecified PLATFORM variable")
endif
$(CC) -D$(PLATFORM) $(INCLUDE) -Wall -O2 -c $^ -o $@
#出现在gcc -D后面的这个PLATFORM的值大概是什么样子的?


.PHONY: clean
clean:
@rm -f $(OBJS) $(LIBNAME)




|
那个 PLATFORM变量可以如楼主那样 make "PLATFORM = xxxx" 传进来。但根据这个变量的名字,很可能是指你的机器或者操作系统的平台。如 PLATFORM = linux 等。这样的变量一般都是在登录系统的时候设置的shell变量。如果在shell设置了这个变量的话,也就不需要在make命令行里设置了。

gcc命令的 -D选项是设置C语言里预处理的名称使用的。例如,设PLATFORM = linux, 则,你上面的那个命令就是gcc -Dlinux ..... 

在gcc所编译的C程序中,也许有下面类似的代码:

# ifdef linux
......
# endif

这样,C语言的预处理功能就会按照上面的定义,编译源程序代码。

|
gcc的-D参数是宏定义,比如
-Daaa=2
相当于在程序代码中有
#define aaa=2
如果没有后面的=2这样的串就相当于1,即
-Daaa
相当于
#define aaa 1
所以从makefile中看不出来这个PLATFORM应该是什么样子的
还需要分析代码才知道这个宏应该怎么写

|


#出现在gcc -D后面的这个PLATFORM的值大概是什么样子的?
这个主要是你编译时候,可以加一些宏,比如程序里有:


#ifdef _A_B_C_
printf("hello n");
#endif

你编译时 make  PLATFORM=_A_B_C_
那么你的程序里就能用  _A_B_C_ 这个宏了 。

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Makefile.in,Makefile.am,Makefile.bor应该怎么用?
  • makefile.am和makefile.in是什么文件,与makefile有什么联系吗?
  • 最近在学习linux C 看到了makefile部分,觉得makefile的语法很难理解,Makefile 的语法是不是shell语法?
  • 求解makefile问题,makefile.conf的作用?
  • 从网上载了个C++程序的源代码,包含38个.cpp和.h,还有makefile.in和makefile.am两个文件,但无configure和makefile.请问怎么编译?谢谢!
  • 有makefile.am,有 makefine.in 为什么就是没有Makefile?
  • makefile如何调用文件目录下的makefile
  • 请教根据Makefile.am自动生成Makefile的问题
  • 怎麼樣使Makefile.in生成Makefile?
  • 【急!】一个程序里有好多文件夹里都有Makefile,如何找到最管用的makefile
  • 【makefile使用】请问怎样在shell中获取makefile的最终目标?
  • unix下面make makefile文件,提示“makefile is up-to-date",怎么办呀?
  • Makefile使用遇到的问题!"Makefile:3:missing the separator.stop"在线等待.......
  • Makefile是如何输出执行的路径的,表示执行的是那个Makefile
  • 下的tar.gz源码里只有makefile.in和makefile.am
  • 一句 makefile 的解释 -- makefile 与 shel 结合
  • linux makefile error :Makefile:335: *** commands commence before first target。
  • [test@localhost ~]$ cat <makefile >catfile 跟cat > catfile <makefile是一样的吧?
  • 关于makfile,makefile.in, makefile.am. configure之间的关系
  • win32下编译Linux 下的项目(makefile.am和makefile.in)


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3