Linux 新手求教一个编译 nginx 的问题

2020-12-07 09:27:54 +08:00
 daijinming

我想在一台树莓派上编译 nginx,在执行 ./Configure 的时候发现 linux 缺少 openssl 、pcre 、zlib 等库,无法编译通过,采用 apt install 也没能安装上这些组件,非常无助。我主要不理解这个编译的过程,有几个问题想求教下:1 、openssl 、pcre 、zlib 这些组件如何可以安装到 linux 下, 他们是以什么形式存在于 linux 的那个目录下 2 、我看网上也有采用下载 openssl 、pcre 、zlib 源码的方式,在编译 nginx 的时候指定源码目录,这种方式和安装二进制的组件有什么异同 3 、nginx 编译后,是不是 这些组件也会编译进二进制程序中??不吝赐教

3225 次点击
所在节点    程序员
32 条回复
shlabc
2020-12-07 12:27:11 +08:00
mkdir -p /usr/local/src/pcre && cd /usr/local/src/pcre
chmod -R 777 /usr/local/src

wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.41.tar.gz
tar zvxf pcre-8.41.tar.gz
cd pcre-8.41
ll

./configure --prefix=/usr/local/ins/pcre-8.41

make && make install

ln -s /usr/local/ins/pcre-8.41 /usr/local/pcre
--------------------------------------------------------------
以上,是我在 centos6.10 下编译 nginx 依赖的一个例子,原理,上面的都说完了

zlib-1.2.11.tar.gz
openssl-1.1.0g.tar.gz
0ZXYDDu796nVCFxq
2020-12-07 13:19:28 +08:00
@shlabc chmod -R 777 的勇士
这样干不会被开除吗
shlabc
2020-12-07 13:29:34 +08:00
@gstqc
仅供参考,没想手把手一点点教学,是我的疏忽。
这是我从虚拟机实验脚本里摘出来的。后面有删除或变更权限步骤,有检查脚本及步骤。
julyclyde
2020-12-07 16:28:58 +08:00
@shlabc 不是手把手的问题,而是根本就是错的内容的问题
huangmingyou
2020-12-07 16:38:33 +08:00
1. 确保 /etc/apt/sources.list 里面有 deb-src 开头的源设置
2. sudo apt build-dep nginx

就会把编译 nginx 需要的所有依赖文件都安装好。
huangmingyou
2020-12-07 16:39:35 +08:00
root@desktop:/home/hmy# apt build-dep nginx
正在读取软件包列表... 完成
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
下列 [新] 软件包将被安装:
dh-systemd libluajit-5.1-dev libmhash-dev libpam0g-dev libperl-dev
升级了 0 个软件包,新安装了 5 个软件包,要卸载 0 个软件包,有 10 个软件包未被升级。
需要下载 2,566 kB/2,993 kB 的归档。
解压缩后会消耗 16.6 MB 的额外空间。
您希望继续执行吗? [Y/n]
daijinming
2020-12-07 16:52:22 +08:00
@Mecool 你给的这个命令不错,不过还差 zlib 找不到
daijinming
2020-12-07 16:56:45 +08:00
@diaryevil 感谢分享
yklaxds
2020-12-08 01:14:21 +08:00
你这种需求试试 Gentoo… 如果不是非要 Linux,freebsd 也是可以的
buffzty
2020-12-08 01:39:16 +08:00
nginx 依赖那些是依赖他们的静态库或者动态库. 你用 apt install libxxx-dev 就能下载到, .so 和.a 会安装到 /usr/lib 目录
.h 头文件会安装到 /usr/include 目录. 这 2 个目录默认是在库搜索目录和头文件搜索目录里的,所以你不必指定库的目录. 如果你自己下载源码编译那么就要告诉系统去哪里找库文件(.so .a). 两者没有什么区别. 唯一的区别就是 apt 安装的库版本可能不是最新的, 你自己安装的可以是最新的.
daijinming
2020-12-08 09:20:01 +08:00
@buffzty 感谢分享
weifan
2021-01-22 16:30:55 +08:00
@gstqc 我也见过这种,太虎了。777 竟然还加 R

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/732768

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX