使用http_perl_module编译nginx 1.8.1

时间:2016-02-02 20:27:32

标签: macos perl nginx compiler-errors

我需要帮助用我的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。我最终使用了一个预先编译的软件包,这有点令人不满意,因为现在我必须处理很多我不喜欢的软件包。无论如何,如果有人有解决方案,我会非常乐意知道。

2 个答案:

答案 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立即执行makevi ./objs/Makefile并修改openssl配置从'./config'到{ {1}}这样它就可以在x86_64 mod中构建openssl。

希望它可以帮到你!