首页 > 系统相关 >Linux_构建命令和文件-make和makefile

Linux_构建命令和文件-make和makefile

时间:2024-12-11 18:11:22浏览次数:4  
标签:文件 target 命令 make makefile C++ 编译 Linux

安装和编译

源码的安装一般由3个步骤组成:配置(configure)、编译(make)、安装(make install)
    Make可以从一个名为Makefile的文件中获得如何构建程序的知识

基本概念

make 命令 
  定义C/C++编译选项,C++使用C++11标准
    CFLAGS := 
    C++FLAGS := -std=c++11
Makefile 文件: 显示规则,隐式规则,变量定义,文件指示,注释
 1.Makefile的核心是规则 rules
 2.依赖关系和依赖方法  target prerequisites
    依赖方法通过规则中的命令(commands)来定义的
 3.变量规则以及特殊变量
    $@ 代表目前的目标
	%这样的通配符
	
	[=]和[:=]符号的区别   [:=]必须先定义然后再使用
	
 自动选择编译源文件	 “伪目标
 
make 如果 target 文件不存在,
    或是 target 文件依赖的 .o 文件(prerequities)的文件修改时间要比 target 这个文件新,
      就会执行后面所定义的命令 command 来生成 target 这个文件
  编译器gcc、源文件SRC、头文件INC、目标文件OBJ、编译选项CFLAGS 和链接选项LDFLAGS、LIBS等 
 以及伪目标clean、compile、debug的执行规则	

示例

 执行文件包含2个源文件
  main.c sin_value.c 
 一般步骤: 先进行目标文件的编译 在链接成执行文件,并加入libm数学库,产生可执行文件

示例 makefile

LIBS = -lm
OBJS = main.o sin_value.o
CFLAGS = -Wall
#每个.cpp生成一个对应的目标文件

objs/%.o : src/%.cpp
main:${ONJS}
	gcc -o $@ ${OBJS} ${LIBS}
clean:
	rm -f $(OBJS) 		

基本命令方式

目标: 依赖文件  
  <tab>命令

标签:文件,target,命令,make,makefile,C++,编译,Linux
From: https://www.cnblogs.com/ytwang/p/18600362

相关文章

  • linux命令
    ipconfigserviceiptablesstop关闭防火墙serviceiptablesstart开启防火墙serviceiptablesrestart重启防火墙serviceiptablesstatus查看防火墙状态suroot切换到超级用户敲回车输入密码su普通用户切换普通用户查看用......
  • Linux 连接 远程服务器的指定IP地址和端口号
    ‌Telnet命令用于连接远程服务器的指定IP地址和端口号,其基本格式如下‌:‌telnet[远程主机IP][端口号]例如,要连接到IP地址为192.168.1.100的设备,端口号为23(默认的Telnet端口号),命令如下:telnet192.168.1.10023Telnet命令的作用‌是提供远程登录服务,用户可以通过Telnet命......
  • Linux
    Linux准备工作Linux由林纳斯·托瓦兹于1991年创立,其内核对外开源。在此基础之上,众多基于Linux内核的发行版本问世,如CentOS和Ubuntu。安装虚拟机:VMware相当于虚拟的计算机硬件。安装操作系统:CentOS在VMware中导入CentOS映像文件并进行相关配置。远程连接:XterminalLinu......
  • MakeNTF.exe 是一个命令行工具,主要用于字体文件的处理,特别是为了创建与 Windows 系统
    MakeNTF用法:创建NTF文件:MakeNTF-win32|-win64[-v][-o]<NTF><AFM文件列表>创建一个来自AFM文件的NTF文件。-win32:为win32驱动程序创建NTF文件。-win64:为win64驱动程序创建NTF文件。(必须指定这两个选项中的一个)-v:详细模式(打印各种信息)。-o:优......
  • linux-全志H3开发日记《U-boot开发》
    此篇文章在2023年4月9日被记录linuxU-boot开发这篇文章的目的前段时间杰哥弄了个nanopi开发板,在他手里吃灰了很久,到我手里又吃灰了很久,总得学一学不是?!开发板的准确型号是nanopim1plus,CPU为全志H3,挺古老的一块处理器了,板载1G的ddr3,性能孱弱,但是用来学习还是特别合适的,主要......
  • 头歌 计算机操作系统 Linux之线程同步二
    第1关:信号量任务描述在上一个实训中,我们学习了使用互斥锁来实现线程的同步,Linux系统中还提供了另一个类似互斥锁的线程不同操作,那就是信号量。本关任务:学会使用信号量来实现线程间的同步与互斥。相关知识互斥锁变量(Mutex)是非0即1的,可看作一种资源的可用数量。当初始......
  • cmake 中一些技巧
    以下内容是工作中遇到的一些cmake特殊使用技巧递归获取目录中所有c文件file(GLOB_RECURSEc_files"${CMAKE_SOURCE_DIR}/xxx/*.c")add_library(xxxlib,${c_files})非递归获取目录中所有c文件set(ProjectSourceFiles)file(GLOBc_files"${CMAKE_SOURCE_DIR}/xxx/*......
  • [教程] Linux系统Anaconda平台下基于conda配置Mamba_ssm环境
    写在前面:系统配置:        Ubuntu20.04LTS,AMDEPYC7352,NVIDIA-A100注意事项:        使用该教程可安装绝大多数版本的mamba_ssm和causal_conv1d,但是不同版本库的使用会存在细微区别,动手能力强的选手可以自己调整,不能调整的就按照原始代码的......
  • Tiny Core Linux在虚拟机中的安装与实战指南
    TinyCoreLinux在虚拟机中的安装与实战指南本文详细介绍了如何在虚拟机中安装和配置TinyCoreLinux,以及如何利用其小巧的体积和高效的性能来满足特定需求。TinyCoreLinux不仅适合作为轻量级操作系统,还可以作为开发人员的测试环境或嵌入式系统的解决方案。随着物联网和嵌入式......
  • makefile学习
     实例1 SHELL:=/bin/bash#\1.ifneq只能在规则里使用,不能在函数里使用\2.函数和依赖的方式哪个更好:\1.函数:$(callfunc,args...),无论all是否需要构建都会立即执行;\2.依赖:all:a1a2,Make决定是否需要重新构建,取决于a1和a2是否比all更新TARG......