编译稍复杂的项目,Makefile提供了两种编译方法,分别是原地编译和单独输出文件夹编译。平时对于一个工程,我们直接make时,就是把当前文件夹中的.c文件,编译出来的.o文件会放在同一目录下,这种方式叫原地编译,原地编译的好处就是处理起来直观明了,可以直接在源代码目录下看到.o的目标文件。

原地编译有一些坏处:第一,污染了源文件目录。第二的缺陷就是一套源代码只能按照一种配置和编译方法进行处理

,无法同时维护2个或2个以上的配置编译方式。

单独输出文件夹方式的编译,就是在编译时另外指定一个输出目录,将来白所有编译生成的.o文件或生成的其他文件全部丢到那个输出目录下去,源代码目录没做任何的污染,这样在输出目录我们就可看到本次配置编译的所有结果。

具体实例如下:

直接输出文件夹编译有着两种方式:

1)make O=/temp/builld,其中build目录就是我们要把编译过程中产生的.o目标文件和其它文件输出到的目录。

2)export BUILD_DIR=/tmp/build

make

以上信息来源于Uboot的主Makefile。

#########################################################################
#
# U-boot build supports producing a object files to the separate external
# directory. Two use cases are supported:
#
# 1) Add O= to the make command line
# 'make O=/tmp/build all'
#
# 2) Set environement variable BUILD_DIR to point to the desired location
# 'export BUILD_DIR=/tmp/build'
# 'make'
#
# The second approach can also be used with a MAKEALL script
# 'export BUILD_DIR=/tmp/build'
# './MAKEALL'
#
# Command line 'O=' setting overrides BUILD_DIR environent variable.
#
# When none of the above methods is used the local build is performed and
# the object files are placed in the source directory.
#

嵌入式项目的两种编译方法相关推荐

  1. python文件的两种编译方法

    有时候,需要对python程序项目进行打包,即仅打包python文件编译后的pyc文件,就需要对python文件进行编译. 编译方法有两种: 1.写一个python简本,对所需编译的文件进行编译.(针 ...

  2. (最新react-native-0.59.5) 如何将ReactNative项目集成到现有得Android项目中(两种实现方法之一)

    背景:最近在学习React-Native相关的知识,有个需求,如果已经存在一个成熟的Android 或者 IOS项目,如何实现在后续的开发中用RN来实现部分功能.再此我只是讲解一下Android de ...

  3. Android Studio导入Eclipse项目的两种方法

    Android Studio导入Eclipse项目有两种方法,一种是直接把Eclipse项目导入Android Studio,另一种是在Eclipse项目里面进行转换,然后再导入Android Stu ...

  4. 在IIS上部署.net core的webapi项目 以及502.5错误的两种解决方法

    在IIS上部署.net core的webapi项目 以及502.5错误的两种解决方法 参考文章: (1)在IIS上部署.net core的webapi项目 以及502.5错误的两种解决方法 (2)ht ...

  5. 创建Vue项目的两种方法(镜像和官网)

    两种搭建方法: 安装node:brew install node 查看node版本:node -v 安装npm:brew install npm 查看npm版本:npm -v 使用淘宝镜像 使用官网办 ...

  6. android studio gradle 自动更新,android studio gradle 两种更新方法更新

    又快一年没有使用AS了,正好要查看一个Android项目代码,干脆升级到新版试试看新变化,旧版本为3.1.2,目前最新版本为3.4.2,AS的升级是很简单的直接update等待即可. 升级完了,打开G ...

  7. 关于收到部分还款SAP系统两种处理方法的说明和比较

    关于收到部分还款SAP系统两种处理方法的说明和比较 (昨天做100小时的时候进行到这一步,有一些疑问书上没有讲清楚,后来自己挨个试了下,又请教了下财务部的同事,总算搞明白了..有些收获,分享一下) 背 ...

  8. but was actually of type 'com.sun.proxy.$Proxy**'的两种解决方法

    错误描述:Caused by: org.springframework.beans.factory.BeanNotOfRequiredTypeException: Bean named '****' ...

  9. springboot 多数据源mybatis的两种整合方法

    转载自  springboot-mybatis多数据源的两种整合方法 简介: 随着并发量的不断增加,显然单个数据库已经承受不了高并发带来的压力.一个项目使用多个数据库(无论是主从复制- - 读写分离还 ...

最新文章

  1. (树上启发式合并)CF741D Arpa’s letter-marked tree and Mehrdad’s Dokhtar-kosh paths
  2. python笔记3(numpy数组)
  3. android selector下的设置背景属性值
  4. docker网络原理
  5. 落纱机器人_「聚焦」青岛艾菲特智能落纱机器人—智能制造,为您省工
  6. 配置集群Nginx+Memcached+Tomcat集群配置
  7. 【Spring第一篇】ClassPathXmlApplicationContext工作原理
  8. UVa 11991 一道简单题
  9. Java I/O系统之处理流类型
  10. css srcset,研究一下响应式图片加载属性srcset和sizes_html/css_WEB-ITnose
  11. SLAM学习笔记-------------(10)后端2
  12. 郑州大学远程教育学院C语言程序设计题库(二)
  13. HTML日期时间插件
  14. Docker Macvlan
  15. 如何查找qq邮箱的服务器地址
  16. 青少儿科学小实验:水的表面张力
  17. Mac菜鸟进阶必学的10个Mac小技巧
  18. cdn刷新api_缓存刷新与查询
  19. 手把手教你在VSCode中使用Git
  20. kali CeWL密码攻击工具 Linux字典生成工具 自定义单词列表生成器

热门文章

  1. 量化交易入门阶段——MACD的其他用法 DEA和0轴交叉
  2. 什么是内联元素(行内)
  3. 运维人员注意啦:NetSarang的Xmanager和Xshell多种产品被植入后门
  4. With best wishes for a happy New Year!
  5. 跟着iMeta学作图 | 山峦图展示微生物丰度随盐度增加的动态变化
  6. matlab fft2的作用,为什么Matlab fft2比OpenCV dft快得多(why Matlab fft2 is much faster than OpenCV dft)...
  7. devstack mysql_DevStack部署Openstack环境
  8. STM32CubeMX串口中断偶校验问题
  9. java中间件karaf_Karaf 3.0.2 发布,轻量级 OSGi 容器
  10. FastText详解