网站首页 > 精选文章 正文
在安装 PHP扩展的时候,会用到一个命令make,在一些文章介绍里会这样说,如果要用编译安装的话就执行make,make install以后就会把代码编译成so文件,然后更改php.ini把extensiion加上这个so的地址,这个扩展就安装完成了,这个make倒底起什么用?
1、以C结尾的代表c语言源文件
2、gcc -c 生成的是扩展为o的文件,这些叫链接文件。
gcc *.o -o app
表示把该文件夹下所有链接文件编译成app可执行文件,然后直接./app就可以运行了。
现在写的文件少还感受不出来,以后写的文件多了,如果你改一个文件的小地方你得重新编译整个项目的话,那是不是很耗时。
这里就引用了make,make会检查源文件和目标文件的时间,目标文件过期了就重新编译它。
这里我们下载php的一个扩展swoole来看看目录情况,在文档说明中就有说要用到make,里面就有一些makefile还有头文件,虽然源码看不懂但基本知道是怎么回事儿。
其它就是一些需要实战才能用到的知识点,比如:
char是数值
long 大整数用
int 普通整数
float 一般浮点数
double 高精度浮点数
short 小整数用
#include 如果是" "表示包含本地头文件
#include 如果是<> 表示在标准库头文件,一般在/usr/local/include/里边或在/usr/include里边,在《unix环境高级编程》这本书里的apue.h,就要放到这个文件夹下,不然你代码就运行不起来。
还有函数的声明,一般要放在main函数前面,代码少还没问题,如果代码多了,调整顺序就很麻烦,或者你需要在一个函数中调用另一个函数,你得去不断的调整顺序。
还有比如递归调用,要相互调用函数,这种怎么办?
解决办法就是把定义和声明分开。
#main.c
#include "stdio.h"
#include "encrypt.h"
int main(){
char msg[80];
while (fgets(msg,80,stdin)){
encrypt(msg);
printf("%s\n",msg);
}
}
#encrypt.h 头文w件
void encrypt(char *message);
#encrypt.c 函数
#include "encrypt.h"
void encrypt(char *message){
char c;
while(*message){
*message = *message ^ 31;
message++;
}
}
gcc encrypt.c main.c -o main
./main
如果要写成makefile文件呢
thruster.o:main.c thruster.c thruster.h #表示依赖文件
gcc main.c thruster.c encrypt.c -c #生成命令
encrypt.o:main.c encrypt.c encrypt.h
gcc main.c encrypt.c -c
main.o:main.c thruster.c
gcc main.c thruster.c -c
app:main.o thruster.o encrypt.o
gcc *.o -o app
你要编译时就直接运行 make app就可以了
这里有后缀为c,h,o,makefile还有一个app可执行文件,我试图把app这个文件放到别的地方去,然后执行,发现是运行不起来的。
在看文章的时候觉得懂了,真正做起来时,发现问题多多,理解比会更重要。
- 上一篇: 大数据--mysql入门知识
- 下一篇: 单兵作战携具的变革:MOLLE的前生和今世
猜你喜欢
- 2025-05-27 Reaper控制器栏的魔法——JS系列脚本介绍
- 2025-05-27 [三菱PLC] 三菱ST语言:第6课 FB、标签的用法
- 2025-05-27 全网最全95道MongoDB面试题1万字详细解析
- 2025-05-27 【快报】*CTF 2019国际赛安胜再获佳绩,WriteUp看这里!
- 2025-05-27 (一)熟练HTML5+CSS3,每天复习一遍
- 2025-05-27 初级开发人员告诉我:OO 设计模式太复杂而且没用
- 2025-05-27 Java学习:基础(不可变集合、Stream流)
- 2025-05-27 日本便利店不得不吃的甜点!
- 2025-05-27 跨语言的服务调用框架Apache Thrift
- 2025-05-27 「性能优化」 JVM调优-参数篇
- 05-3022《Vue 入门教程》VueRouter 路由嵌套
- 05-30前端面试题-Vue 项目中,你做过哪些性能优化?
- 05-30超简 Vue3+elementPlus 后台管理系统
- 05-30还有前端不知道Electron的?手把手教你把Vue项目打包成桌面程序
- 05-30Nuxt最简入门,让vue项目快速被搜索引擎收录
- 05-30Mac上最美最好用软件系列
- 05-30AI编程小白必备|Cursor安装及配置教程
- 05-30好玩儿的编程语言——文言文编程语言
- 最近发表
- 标签列表
-
- 向日葵无法连接服务器 (32)
- git.exe (33)
- vscode更新 (34)
- dev c (33)
- git ignore命令 (32)
- gitlab提交代码步骤 (37)
- java update (36)
- vue debug (34)
- vue blur (32)
- vscode导入vue项目 (33)
- vue chart (32)
- vue cms (32)
- 大雅数据库 (34)
- 技术迭代 (37)
- 同一局域网 (33)
- github拒绝连接 (33)
- vscode php插件 (32)
- vue注释快捷键 (32)
- linux ssr (33)
- 微端服务器 (35)
- 导航猫 (32)
- 获取当前时间年月日 (33)
- stp软件 (33)
- http下载文件 (33)
- linux bt下载 (33)