当前位置: 首页 > news >正文

C语言,Linux,静态库编写方法,makefile与shell脚本的关系。

静态库编写:

编写.o文件gcc -c(小写) seqlist.c(需要和头文件、main.c文件在同一文件目录下)

libs.a->去掉lib与.a剩下的为库的名称‘s’。

-ls是指库名为s。

-L库的路径。

makefile文件编写:

CFLAGS=-Wall -O2 -g  -I ./inc/ 
LDFLAGS=-L./lib/ -llistAPP=app
SRC=$(wildcard ./src/*.c)
OBJ=$(patsubst %.c, %.o, $(SRC))CC=gcc
$(APP):$(OBJ)$(CC) -o $(APP) $^ $(LDFLAGS)
clean:rm -f $(OBJ) $(APP)

这个是编译后的文件,app文件为编译后的二进制文件。 

 

 

makefile与shell脚本关系

shell 脚本和 makefile 是两种完全不同的工具,但它们经常在 UNIX 和 Linux 系统中一起使用,尤其是在软件构建和自动化工具链中。让我们分别看看它们,然后探讨它们之间的关系。

1. Shell 脚本:
   - Shell 脚本是一种用于自动化操作的脚本语言,它可以在 Unix 或 Linux shell 中运行。
   - 它通常用于执行日常的文件和目录操作,处理文本,以及进行系统管理任务。
   - Shell 脚本可以直接在命令行上运行,或保存为.sh文件并以脚本方式执行。

2. Makefile:
   -makefile是 make 工具使用的文件,它描述了如何从源代码构建目标(通常是可执行程序或库)。
   - 它包含了一组规则,这些规则定义了目标文件、依赖项以及将依赖项转换为目标的指令。
   - 指令通常是 shell 命令,因此 makefile 会频繁地使用 shell 脚本。
   - `make` 工具会检查文件的时间戳来确定哪些文件需要更新,从而只构建那些实际需要更新的部分,而不是从头开始构建整个项目。

关系:
   - 在 makefile 中,你会经常看到 shell 命令。这是因为 make 使用 shell 命令来执行构建任务。
   - `make` 可以执行任何可在 shell 中运行的命令,包括调用 shell 脚本。
   - 通常,较小的任务(如编译单个文件)直接在 makefile 中使用 shell 命令完成,而更复杂的任务(如部署应用程序)可能会调用单独的 shell 脚本来完成。
   - 简而言之,makefile 通常调用 shell 命令(或其他工具,如编译器)来完成其工作。因此,shell 脚本和 makefile 经常在构建和部署过程中一起使用。

        在实际开发中,尤其是在大型项目中,使用 make 和 makefile 可以极大地简化构建过程,而 shell 脚本则为自动化提供了额外的灵活性和功能。

http://www.lryc.cn/news/134085.html

相关文章:

  • Php“牵手”淘宝商品详情页数据采集方法,淘宝API接口申请指南
  • 如何使用CSS实现一个全屏滚动效果(Fullpage Scroll)?
  • Docker之Compose
  • 安装chromedriver 115,对应chrome版本115(经检验,116也可以使用)
  • 排序算法:插入排序
  • 掌握AI助手的魔法工具:解密Prompt(提示)在AIGC时代的应用「上篇」
  • JMeter - 接口压力测试工具简单使用
  • 【C++入门到精通】C++入门 —— priority_queue(STL)优先队列
  • 静态代码扫描工具 Sonar 配置及使用
  • docker 03(docker 容器的数据卷)
  • 【04】基础知识:typescript中的类
  • CCClippingNode:在游戏中实现遮罩效果、剪切效果,以涂抹糖霜为例,如何更好的实现涂抹效果,提高用户的游戏体验
  • cuda gdb调试
  • 【vim 学习系列文章 5 - cscope 过滤掉某些目录】
  • 实验三 HBase1.2.6安装及配置
  • LightDB sequence支持MAXVALUE最大值与Oracle相同
  • 二、Kafka快速入门
  • 消息中间件-kafka实战-第五章-kafka重复消费、顺序消费及死信队列
  • python爬虫9:实战2
  • 从业务层的代码出发,去排查通用框架代码崩溃的问题
  • LLM预训练大型语言模型Pre-training large language models
  • [Machine Learning] 损失函数和优化过程
  • serialVersionUID 有何用途?如果没定义会有什么问题?
  • C# OpenCvSharp DNN 二维码增强 超分辨率
  • this.$refs使用方法
  • Ohio主题 - 创意组合和代理机构WordPress主题
  • mysql 、sql server trigger 触发器
  • 自然语言处理从入门到应用——LangChain:索引(Indexes)-[检索器(Retrievers)]
  • 春秋云境:CVE-2022-0543(Redis 沙盒逃逸漏洞)
  • 关于uniapp组件的坑