编译环境搭建:Makefile

Linux C/C++学习之 环境搭建+GCC编译过程+Makefile编写+相关操作函数 环境搭建 Ubuntu 18.04 桌面版系统 .iso (sudo apt install gcc g++、 vim) VMware 16(创建虚拟机) VScode (C/C++拓展包、 JSON文件配置)连接Ubuntu Xshell 7 远程连接Ubuntu Xftp 7 远程连接Ubuntu ssh免密配置 gcc编译过程 命令: 以test.c 为例 yang@yang:~/Linux/lession02$ gcc test.c -E -o test.i //-E 生成预处理后 阅读详情

前言

********************************************************************************************************************
本系列文章所提供的算法均在以下环境下编译通过。
 【算法编译环境】Federa 8,linux  2.6.35.6-45.fc14.i686
 【处理器】           Intel(R) Core(TM)2 Quad CPU    Q9400  @ 2.66GHz 
 【内存】               2025272 kB

 如果有问题或者纰漏或者有好的建议更或者有更好的算法,请不吝赐教。
************************************************************************************************************************

正文

  长久以来,笔者一直想用一种管理工具,将所编写的测试程序、算法代码以及工程代码统一管理起来。因为有些是用Java写的有些是用C++写的。虽有想法,但却无行动。这又让我想起了昨天晚上看到一部电影里所说,"思想上的巨人,行动上的矮子"。笔者也不想做这种人。要笔耕不辍,要随时随地表达思想。后来通过一段时间学习Makefile。发现其强大,无比强大。

  就比如说,我们是用VS2010,或者什么IDE工具,你要做多少操作啊。起码你要编写多个工程,然后右键某个工程,点击编译,运行吧,有时候工程多了还卡。那反过来用Makefile呢?我们只需要make就完全生成我们所需要的程序文件了。方便吧。键盘输入速度比鼠标点来点去方便吧。你明白打魔兽打dota时键盘的重要性了吧。另外在命令行上打make,然后黑屏上一个一个编译文件,是不是有一种高端大气上档次的感觉。

  不过其实Makefile确实很好,因为他可以生成多个可执行文件。让你在一个工程底下弄多个main文件。这一点让我很开心。这是其优点一;

我不用修改makefile文件,即使是新加一个包含main的文件代码,我也只需要直接make就OK,可执行文件就直接跑到bin目录下了。甚至都没有obj什么lnk等一大堆乱七八糟的文件。还占空间,用vs的小伙伴们,不是这样吗?

  

  好吧,吐槽了这么多,真心觉得makefile好用。这里我弄上来我的Makefile文件。分享给小伙伴们,大家只要放在某个目录下,不用修改,直接可以编译任意多个main函数的。

TARGET_DIR :=bin
SRC += $(wildcard *.cpp )
EXE += $(patsubst %.cpp, %, $(SRC) )
COMPILE=g++
CFLAGS= -Wall -g -O0
all : $(EXE)
.PHONEY:all


% : %.cpp
@if [ ! -d bin ]; then mkdir bin; fi
$(COMPILE) $(CFLAGS) $< -o $(TARGET_DIR)/$@

clean:
rm -rf *.o


稍微解释下:上面EXE是将src下所有源码文件去掉.cpp后的文件名,这个文件名就是之后的可执行文件名。比如你的文件夹下有一个test.cpp,这EXE就是test。.PHONEY:all是说明可以生成多个目标文件。

@if [ ! -d bin ]; then mkdir bin; fi是判断文件夹下是否存在bin目录,没有就创建。

底下$(COMPILE) $(CFLAGS) $< -o $(TARGET_DIR)/$@,意思是编译,编译完之后直接放在bin目录下。$<是第一个依赖文件的意思。$@是目标文件的意思。



%:%.cpp是将所有的.cpp文件直接生成目标文件,没有中间文件的。大家可以按照自己的需求进行修改。

 clean大家都清楚吧。

在我的机器上,大致编译显示如下:


作者:Alex

出处:http://blog.youkuaiyun.com/hellotime
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
OpenWrt小白必看:从零开始编译你的第一个路由器应用程序(附完整代码示例) 本文为OpenWrt开发新手提供了一份从零开始的实战指南,详细讲解了如何搭建编译环境、理解软件包结构,并手把手教你编写和编译第一个能在路由器上运行的应用程序。通过完整的代码示例和清晰的步骤,帮助开发者快速掌握OpenWrt应用程序的编译核心流程与技巧。 阅读详情

相关推荐

编译C代码环境搭建

C代码编译环境(电脑上编译运行)对于想提高C语言能力的人来说是必须的,比之在单片机上验证省去不少步骤和时间,比之用VS (visual studio)更小巧灵活。

quanquanxiaobu的博客 937

Linux-Makefile 编译指定目录下所有源文件 (集成开发环境IDE 原理)

mafile编译所有工程文件

Zhao的博客 2257

OpenWRT插件安装全攻略:从编译到部署的完整流程

本文详细介绍了OpenWRT插件的完整编译与部署流程。从环境准备、SDK选择、源码获取,到使用menuconfig配置、执行编译命令生成ipk文件,最后通过opkg安装并解决依赖问题。掌握此技能,您可以为路由器自由添加或定制功能,构建专属的插件生态。

jenkins8butler的博客 290

【Linux】Linux环境下如何实现自动化编译——make/makefile入门

在Linux 环境下编写好C语言代码之后,我们需要使用编译工具gcc 将其翻译为可执行文件。可是,如果对代码进行多次修改,每次修改完成,都需要重新使用 gcc 指令,会显得非常麻烦,所以可以使用 Linux 下的自动化构建工具 make/Makefile。

m0_65679465的博客 3741

从零开始:OpenWrt内核驱动的定制与编译实战

本文详细介绍了从零开始定制与编译OpenWrt内核驱动的完整实战流程。内容涵盖编译环境搭建、驱动代码结构分析、编写Hello World示例驱动,到配置、编译、集成测试,并进阶至为真实USB硬件编写驱动。重点解析了OpenWrt特有的双层编译框架,帮助开发者掌握内核驱动开发的核心技能。

4k5l6j7h8的博客 213

MacOS 15+环境下iverilog与GtkWAVE的集成与实战

本文详细指导在MacOS 15(Sequoia)系统上搭建开源数字电路仿真环境。通过Homebrew安装iverilog,并从源码编译安装GtkWAVE,解决了新系统下的兼容性问题。文章提供了完整的安装、配置步骤,并通过一个2位加法器的实战项目,演示了从Verilog代码编写、编译仿真到使用GtkWAVE查看波形的全流程,最后分享了Makefile自动化、VSCode集成及性能优化等高效工作流技巧。

weixin_29276847的博客 502

【Makefile】Makefile 编译 Keil 工程(Linux 环境)

【Makefile】Makefile 编译 Keil 工程(Linux 环境)

challenglistic的博客 3357

有了Makefile, CMake存在的意义是什么?如何借助Makefile构建ObjC语言编译环境?如何获取编译器的版本号?

Makefile规定了编译脚本的基本长相,但随着跨平台需求越来越大,一份Makefile想要跨平台给Windows/Linux/Mac等等平台越来越难,需要维护的工作量越来越大。CMake定义了makefile中跨平台需要的公用组成,使用更简洁的语法,方便了维护。

编程语言开发、框架原理、编程思想、最佳实践技巧经验分享。致力于各种编程技术的技巧经验干货分享,讲解开发避坑技巧,追踪开发前沿技术,实战展开解决难题。 程序员小迷助您在编程路上越走越好! 1436

如何在Windows下使用make编译Makefile

‌Makefile是一种用于自动化构建和管理程序的工具‌,它定义了项目中文件的依赖关系和构建步骤,帮助程序员自动化编译、链接和打包程序,从而提高软件开发效率。安装codeblocks后,找到codeblocks安装目录下的MinGW的文件夹,将MinGW文件夹下的bin添加到环境变量即可。到这里已经编译了make的二进制 文件了,文件名为gnumake.exe,位于当前目录下的GccRel文件夹。到这里已经编译了make的二进制 文件了,位于当前目录下的WinRel文件夹gnumake.exe。

【微软MVP】zhaotianff的专栏 1万+

Win10家庭版没有Hyper-V?教你一招轻松解决(含避坑指南)

本文详细介绍了在Win10家庭版中启用Hyper-V的完整实战指南。通过DISM工具链绕过系统版本限制,无需重装系统即可完整启用所有Hyper-V组件,适用于开发者测试多系统环境和安全隔离应用场景。文章包含详细操作步骤、常见问题解决方案及性能优化配置,帮助用户轻松解决Win10家庭版没有Hyper-V的问题。

weixin_29239661的博客 495

别再被骚扰了!手把手教你彻底卸载阿里云盾(安骑士)并封禁其IP段

本文详细指导如何彻底卸载阿里云盾(安骑士)并封禁其IP段,帮助用户夺回服务器控制权。从识别监控组件到执行官方卸载脚本,再到手动清理残留文件和配置iptables规则,确保完全阻断云盾通信。适用于追求极致性能或需要完全自主控制的环境。

weixin_42525551的博客 450

python3 compile openwrt_openwrt 编译环境搭建及Makefile

Openwrt编译环境搭建操作系统 centos-5.8 64位安装gnome, 可使用Xmanager#yum -y groupinstall "X Window System"#yum -y groupinstall "Desktop"安装svn#yum install subversion下载openwrt源码#svn co svn://svn.openwrt.org/openwrt/tru...

weixin_35990183的博客 822

本地AI代码助手:智能解析大型代码库,实现自动化重构与理解

在软件开发中,大型代码库的理解与维护是常见挑战。传统方法依赖人工阅读和有限上下文工具,效率低下。通过结合检索增强生成(RAG)和多智能体(Multi-Agent)架构,现代AI工具能够智能解析代码结构,理解模块关系,并精准定位相关代码片段。这种技术不仅能提升代码探索效率,还能自动化执行重构、文档生成等任务,在遗留系统维护、快速上手新项目等场景中发挥关键作用。本文以blackboxaicode/cli为例,展示了如何利用其代码感知和Workflow Automation能力,高效处理复杂代码库。

weixin_30240349的博客 363

Fabric源码编译及示例

Fabric源码的编译及实例

小简铺子 2830

Ubuntu下OpenOCD+GDB的安装、编译及使用

目标开发板(芯片):stm32mp157aaa 仿真器:ST-Link 操作系统:Ubuntu 18.04 调试软件:OpenOCD OpenOCD的安装 首先下载OpenOCD有多种方式,可以GitHub上下载,目录下打开终端,输入 git clone git://git.code.sf.net/p/openocd/code openocd 下载完整的OpenOCD的文件夹。进入到OpenOCD的目录下,开始安装。 接着,OpenOCD适用于微处理器的debug和烧写,需要下载相关库 sud

蓝冰露的博客 9524

PDPS16.0单机版与SPLMLicenseServer授权避坑指南:从安装到冲突解决

本文详细解析了PDPS16.0单机版的安装与授权流程,重点阐述了如何正确配置SPLMLicenseServer本地许可证服务器以实现软件激活。针对安装过程中常见的许可证冲突问题,提供了清晰的排查思路和解决方案,并介绍了通过设置环境变量等替代授权方法,帮助用户高效避坑,确保Tecnomatix Process Simulate顺利运行。

weixin_29231221的博客 562

自己动手搭建 Linux 0.12 编译环境 — Makefile

自己动手搭建 Linux 0.12 编译环境 ——Makefile篇 作者:MTK_蛙蛙鱼 写作时间:2013年11月13日 序:时隔几个月,我又开始了Linux 0.12的征程,现在的我变得更加成熟,掌握了更多的技能。时间在变,环境在变,心情也在变,唯一不变的是我探究你玩弄你的心,我喜欢沉浸在思考的世界里,喜欢揣测你想干什么,这好像已经成为了我生活的另外一个分支,一直一直伴随我的

MTK_蛙蛙鱼 2308

机器人动力学仿真软件:PyBullet_(10).案例分析:双足机器人行走仿真

在本节中,我们将详细探讨如何使用PyBullet进行双足机器人的行走仿真。双足机器人行走仿真是一个复杂的动力学问题,涉及多个关节的协调运动和环境交互。通过本节的学习,您将了解如何创建和控制双足机器人模型,设置仿真环境,以及实现基本的行走算法。首先,我们需要创建一个双足机器人模型。PyBullet支持多种模型格式,包括URDF(Unified Robot Description Format)和MJCF(MuJoCo XML Format)。URDF是一种广泛使用的机器人模型描述格式,我们将使用URDF来创建

kkchenjj的博客 909

避坑指南:平头哥玄铁C910开源项目本地编译时,你可能会遇到的3个环境配置问题

本文详细解析了平头哥玄铁C910开源项目本地编译过程中常见的3个环境配置问题,包括幽灵目录、工具链路径配置和Makefile语法错误。通过具体解决方案和验证步骤,帮助开发者高效搭建编译运行环境,避免陷入调试陷阱,提升开发效率。

ahhli4007的博客 399

在 ABAP Push Channel 里玩转 Detached Client:用 Attach Handle 把 WebSocket 连接交接给业务逻辑

摘要:本文介绍了ABAP Push Channels (APC)中的Detached Client技术,该技术通过将WebSocket连接建立与后续处理分离,实现更高效的实时通信。核心流程包括创建连接、使用connect_and_detach交接连接、以及通过attach handle重新附着发送消息。文章还探讨了PCP协议和AMC技术在企业级推送场景中的应用,并通过示例代码展示了Detached Client的具体实现方式。这种设计解决了传统轮询的资源浪费问题,特别适用于生产线监控、客服系统等需要服务端主

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 2312

告别繁琐!VS Code 下OpenClaw零配置上手秘籍

本文介绍了在VSCode环境下零配置上手OpenClaw开发工具的最佳实践。首先详细说明了VSCode和OpenClaw插件的安装步骤,包括获取安装包、配置环境变量等准备工作。然后重点讲解了核心配置流程:设置OpenClaw路径、调整工作区参数、添加自定义代码片段等优化开发体验的方法。通过创建测试项目验证配置有效性,并针对常见的路径错误、运行报错等问题提供了排查方案。本文旨在帮助开发者快速搭建高效的OpenClaw开发环境,充分发挥VSCode与OpenClaw的组合优势,提升开发效率。无论是新手还是资深开

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 528

Navicat Keygen Tools完全指南:从安装到激活的终极破解方案

Navicat Keygen Tools是一套强大的开源工具集,专为Navicat数据库管理软件提供激活解决方案。本指南将详细介绍如何通过编译源码、执行补丁和生成序列号的方式,实现Navicat的完整激活,让你免费使用这款专业数据库工具的全部功能。 ## 准备工作:编译环境搭建 在开始激活流程前,需要确保系统已安装必要的编译工具和依赖库。Navicat Keygen Tools基于C++开发,

gitblog_00942的博客 476

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

OpenGL入门(一)

初识OpenGL,个人觉得它其实就是一个图形处理方面的SDK。 在学习一个新的SDK时,首先就是要为其准备编译环境。 个人准备在windows进行opengl小程序的编译,做一些小的demo,但又不是很想依赖VS等编译环境,所以想自己编写makefile进行opengl demo的编译工作。 首先需要准备nmake.exe  cl.exe  link.exe等基本的编译链接工具。 其次就是

MissLong的专栏 799

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

RV1106编译优化与驱动加载实战指南

本文详细介绍了RV1106芯片的编译优化与驱动加载实战指南。通过优化编译并行数、使用ccache缓存和选择性编译等方法,显著提升RV1106的编译速度。同时提供了内核驱动模块配置、自定义驱动开发和调试技巧,帮助开发者高效解决驱动加载中的常见问题。

k9l0m1的博客 202

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

上一篇: 字符串面试题系列之六:在字符串中删除特定的字符
下一篇: awk处理之案例一:awk 处理百分比的问题
程序员2
博客等级 码龄15年 6粉丝 27原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值