我需要帮助用我的Mac上的perl_module编译nginx:
System Software Overview:
System Version: OS X 10.11.1 (15B42)
Kernel Version: Darwin 15.0.0
Boot Volume: Macintosh HD
Boot Mode: Normal
Computer Name: Philipp
User Name: XXXXXXX XXXXXXXX (philipp)
Secure Virtual Memory: Enabled
Time since boot: 4 days 22:46
我将nginx配置为使用PCRE和PERL编译,即:
./configure --with-pcre=/Users/philipp/downloads/pcre-8.38 --with-http_perl_module --prefix=/servers/nginx
配置的输出状态:
checking for perl
+ perl version: This is perl 5, version 18, subversion 2 (v5.18.2)
built for darwin-thread-multi-2level
+ perl interpreter multiplicity found
如果我执行make,则会遇到以下错误:
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
我用谷歌搜索并发现了一个提示导出KERNEL_BITS = 64,这没有解决问题。有关如何使用perl编译nginx的任何建议。编译成功没有--with-http_perl_module选项,但在这种情况下我不能在nginx.conf中使用perl(当然:))。
更新
我无法使用perl编译nginx。我最终使用了一个预先编译的软件包,这有点令人不满意,因为现在我必须处理很多我不喜欢的软件包。无论如何,如果有人有解决方案,我会非常乐意知道。
答案 0 :(得分:1)
我不确定这是否是offtopic,但是因为它是关于在perl
中使用nginx
(我这样做,并且非常棒)。
尝试构建此模块时遇到了类似的问题。它的根源是我没有得到正确的LD标志。
最简单的方法 - IMO - 从包中安装nginx
,运行nginx -V
并查看使用了哪些标志 - 将它们全部复制,并包含附加内容。 (并检查它是否已经在您的发行版中构建 - 它是在我的,我认为是Centos 7.2包 - 我没有它,但我不确定它一定会有帮助)
您可能还需要安装新的perl
版本,以配合它。
答案 1 :(得分:0)
--with-pcre=../modules/pcre-8.38
--with-openssl=../modules/openssl-1.0.2g
--prefix=/usr/local/nginx
--with-http_perl_module
--with-http_ssl_module
--with-http_addition_module
--with-http_sub_module
--with-http_realip_module
--with-http_stub_status_module
--with-cc-opt='-I /usr/local/include'
--with-ld-opt='-L /usr/local/lib -L/usr/local/opt/perl518/lib'
我遇到了同样的问题。经过大约3个小时的挖掘,终于解决了。这是我的配置文件,我在perl518
中安装了brew
/usr/local/opt/perl518/lib
,并使用版本为nginx version: nginx/1.10.0
的最新nginx源代码。
事情似乎正如@Sobrique所说,你需要给出正确的--with-ld-opt
& --with-cc-opt
。
important
,./configure
之后,DO NOT
立即执行make
,vi ./objs/Makefile
并修改openssl
配置从'./config'
到{ {1}}这样它就可以在x86_64 mod中构建openssl。
希望它可以帮到你!