扫码关注官方订阅号
一种传统的编译方式是:
./configure --prefix=/usr/local/redis make && make install
另一种编译方式是:
meke PREFIX=/usr/local/redis install
请问这两种方式有什么区别么
闭关修行中......
Redis的库依赖关系简单,所以Redis作者已经写好了Makefile.而像PHP这种复杂的程序,则必须先根据configure配置生成Makefile,然后make编译.因为像PHP的很多扩展功能,都是依赖外部库的,所以必须先用configure检查是否满足依赖关系.比如PHP经常依赖的一些外部库:libxml,libcurl,openssl,mcrypt,zlib,bz2,libjpeg,libpng等等.像configure中--with-xxx的配置项基本都是表示这个功能依赖外部库,而--enable-xxx的配置项则表示这个功能由PHP自己实现,不依赖外部库.不过有时候PHP的扩展也会内置外部库,比如--with-pcre-regex捆绑的pcrelib库,--with-gd的捆绑的libgd库.
大部分程序使用的是第一种方法吧。make编译依赖于Makefile文件,而Makefile文件的编写比较繁琐,所以大部分软件通过autoconf来简化生成Makefile文件,而./configure就是让autoconf自动配置并生成Makefile的命令。大部分软件源代码中都没有Makefile文件,都是通过./configure生成的,也就是说如果直接在这些软件源码目录下运行make,是直接报错无法编译的。而你列出的Redis中,开发者已经编写好了Makefile,不需要在依赖autoconf来生成了,所以直接make即可。
make
Makefile
autoconf
./configure
Redis
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
Redis的库依赖关系简单,所以Redis作者已经写好了Makefile.
而像PHP这种复杂的程序,则必须先根据configure配置生成Makefile,然后make编译.
因为像PHP的很多扩展功能,都是依赖外部库的,所以必须先用configure检查是否满足依赖关系.
比如PHP经常依赖的一些外部库:libxml,libcurl,openssl,mcrypt,zlib,bz2,libjpeg,libpng等等.
像configure中--with-xxx的配置项基本都是表示这个功能依赖外部库,
而--enable-xxx的配置项则表示这个功能由PHP自己实现,不依赖外部库.
不过有时候PHP的扩展也会内置外部库,比如--with-pcre-regex捆绑的pcrelib库,--with-gd的捆绑的libgd库.
大部分程序使用的是第一种方法吧。
make编译依赖于Makefile文件,而Makefile文件的编写比较繁琐,所以大部分软件通过autoconf来简化生成Makefile文件,而./configure就是让autoconf自动配置并生成Makefile的命令。大部分软件源代码中都没有Makefile文件,都是通过./configure生成的,也就是说如果直接在这些软件源码目录下运行make,是直接报错无法编译的。而你列出的
Redis中,开发者已经编写好了Makefile,不需要在依赖autoconf来生成了,所以直接make即可。