• cygwin 安装openresty过程记录


    步骤:

    1,cygwin最新版本。

    2,cygwin安装模块:gcc, make, openssl, pcre, readline, perl, wget, unzip, sqlite。(应该是全的,在后面编译安装软件的时候会提示缺少的模块或命令,后续可以再装的)

    3,cygwin手工下载源码编译安装:luarocks, lua5.1.5, 然后运行luarocks install xx命令安装其他模块(如 lsqlite3)等。

    4,ngx_openresty1.7.10.2编译安装。参照(http://www.makaidong.com/149671.html)。

    遇到的问题及解决过程:

    1,luarocks install命令是默认使用wget工具来下载的,没装的话会报获取manifest文件失败,没装unzip的话则报解压manifest文件失败。

    2,编译lua_cjson中报: 函数"lua_xxx"未定义的引用。lua_xx函数出现多,是由于没有找到lua动态库,将liblua.a拷到/usr/local/lib/liblua.a下即可编译了。中间被折腾的没办法了,最终尝试用luarocks install lua_cjson 来安装,发现安装参数后面多了一个-llua。查看gcc命令得知,-L是查找库路径,而-l是加载库的。库默认路径为/usr/local/lib。可修改makefile文件,指定lua库路径并加载库(-L/usr/local/lib -llua)。修改openresty/bundle中的lua-cjson,lua-rds,lua-redis三个的Makefile文件。

    3,编译通过,安装报"crypto函数未定义的引用"。经查和看代码发现,crypto函数属openssl包中的,那么也是由于这个库没有加载,导致编译失败。于是查找libcrypto.a,拷到/usr/local/lib下。

    4,经过一番折腾,也不知是安装了什么东东,竟然按照步骤4帖子的编译步骤,顺利编译通过和运行了。之前可是一直不行的。

    5,openresty使用系统的lua来编译运行。调用cjson和lsqlite3模块报错:dynamic libraries not enabled; check your Lua installation 追述原因就是没有编译动态库加载,这样我们修改lua源码文件下的 src/Makefile文件找到posix修改成这样:

    posix:
    #$(MAKE) all MYCFLAGS=-DLUA_USE_POSIX
    $(MAKE) all MYCFLAGS="-DLUA_USE_POSIX -DLUA_USE_DLOPEN" MYLIBS="-ldl"
     

    体会:

    1,学如逆水行舟,每前进一步都是需要努力的。

  • 相关阅读:
    PHP框架 CI与TP之MVC比较
    多线程设计要点
    BigPipe 的工作原理
    Linux yum命令的使用技巧
    java 乱码问题
    win7或xp下常用命令
    不同场景下JVM参数的设置
    win7笔记本创建wifi热点
    maven编译出现Java heap space
    Curling 2.0——蛋疼的一道题
  • 原文地址:https://www.cnblogs.com/weiwelcome0/p/5771107.html
Copyright © 2020-2023  润新知