nginx静态编译luajit (openresty)
来源:互联网 发布:access数据库案例 编辑:程序博客网 时间:2024/04/23 20:40
最近折腾 openresty 的版本的升级, 由于加入了自定义的模块, 需要更改相关编译脚本。
从官网下载了最新的 openresty-1.11.2.2 , 首先尝试了下原版的编译,很顺利,但是编译后的nginx 二进制是动态链接 libluajit-5.1.so.2的, 在跨机器部署时有点麻烦 和不便,最好能静态编译 luajit.a 到nginx 二进制中。
从网上看到了 以下几种方法(http://blog.csdn.net/liujiyong7/article/details/17530915 ),都比较繁琐, 自己摸索了一条方法,分享下。
其实下面第三种方法手动去除 so文件,可以自动化,在luajit 的makefile文件中,去除掉生成so 文件的指令即可。
在 luajit 的makefile文件中,注释掉 安装 so 动态库的指令即可,然后重新编译openresty 即可。
install: $(INSTALL_DEP)
@echo "==== Installing LuaJIT $(VERSION) to $(PREFIX) ===="
$(MKDIR) $(INSTALL_DIRS)
cd src && $(INSTALL_X) $(FILE_T) $(INSTALL_T)
cd src && test -f $(FILE_A) && $(INSTALL_F) $(FILE_A) $(INSTALL_STATIC) || :
$(RM) $(INSTALL_DYN) $(INSTALL_SHORT1) $(INSTALL_SHORT2)
# install so lib
#cd src && test -f $(FILE_SO) && \
# $(INSTALL_X) $(FILE_SO) $(INSTALL_DYN) && \
# $(LDCONFIG) $(INSTALL_LIB) && \
# $(SYMLINK) $(INSTALL_SONAME) $(INSTALL_SHORT1) && \
# $(SYMLINK) $(INSTALL_SONAME) $(INSTALL_SHORT2) || :
#
cd etc && $(INSTALL_F) $(FILE_MAN) $(INSTALL_MAN)
cd etc && $(SED_PC) $(FILE_PC) > $(FILE_PC).tmp && \
$(INSTALL_F) $(FILE_PC).tmp $(INSTALL_PC) && \
$(RM) $(FILE_PC).tmp
cd src && $(INSTALL_F) $(FILES_INC) $(INSTALL_INC)
cd src/jit && $(INSTALL_F) $(FILES_JITLIB) $(INSTALL_JITLIB)
#$(SYMLINK) $(INSTALL_TNAME) $(INSTALL_TSYM)
@echo "==== Successfully installed LuaJIT $(VERSION) to $(PREFIX) ===="
@echo "==== Installing LuaJIT $(VERSION) to $(PREFIX) ===="
$(MKDIR) $(INSTALL_DIRS)
cd src && $(INSTALL_X) $(FILE_T) $(INSTALL_T)
cd src && test -f $(FILE_A) && $(INSTALL_F) $(FILE_A) $(INSTALL_STATIC) || :
$(RM) $(INSTALL_DYN) $(INSTALL_SHORT1) $(INSTALL_SHORT2)
# install so lib
#cd src && test -f $(FILE_SO) && \
# $(INSTALL_X) $(FILE_SO) $(INSTALL_DYN) && \
# $(LDCONFIG) $(INSTALL_LIB) && \
# $(SYMLINK) $(INSTALL_SONAME) $(INSTALL_SHORT1) && \
# $(SYMLINK) $(INSTALL_SONAME) $(INSTALL_SHORT2) || :
#
cd etc && $(INSTALL_F) $(FILE_MAN) $(INSTALL_MAN)
cd etc && $(SED_PC) $(FILE_PC) > $(FILE_PC).tmp && \
$(INSTALL_F) $(FILE_PC).tmp $(INSTALL_PC) && \
$(RM) $(FILE_PC).tmp
cd src && $(INSTALL_F) $(FILES_INC) $(INSTALL_INC)
cd src/jit && $(INSTALL_F) $(FILES_JITLIB) $(INSTALL_JITLIB)
#$(SYMLINK) $(INSTALL_TNAME) $(INSTALL_TSYM)
@echo "==== Successfully installed LuaJIT $(VERSION) to $(PREFIX) ===="
网络上的方法总结如下:
1. 直接使用 openresty,并利用openresty提供的方式静态编译luajit
安装nginx nginx_lua_module luajit nginx_dev_kit步骤略
2. 在nginx configure执行过后,修改生成的objs/Makefile文件
在第一个target “objs/nginx: objs/src/core/nginx.o \”下面,添加luajit的静态文件
把
-Wl,-E -lpthread -lcrypt -L /xxx/xxx/lua/libs -lluajit-5.1 -lm -ldl /xxx/xxx/pcre-8.02/.libs/libpcre.a -lssl -lcrypto -ldl -lz
改成
-Wl,-E -lpthread -lcrypt /xxx/xxx/libluajit-5.1.a -lm -ldl /xxx/xxx/pcre-8.02/.libs/libpcre.a -lssl -lcrypto -ldl -lz
改完后 再执行 make && make install 就行了
我们用ldd nginx命令可以看到,已经依赖luajit动态链接库了
3. 移除luajit的so文件,只保留.a文件,这样ld在连接时找不到so文件,就只好链接.a文件了
改完后,重新编译nginx。
0 0
- nginx静态编译luajit (openresty)
- Openresty nginx使用 luaJIT 配置!
- openresty 静态编译
- openresty php luajit
- nginx + luajit
- Lua5.3简单的C扩展示例以及与OpenResty(LuaJIT)的兼容编译
- openresty 应用打包并使用luajit编译lua代码实现简单加密
- Building openresty1.7.10.1 with luajit on windows using Cygwin, 在windows下用Cygwin下编译带Luajit的openresty
- LuaJIT(OpenResty)调用iconv动态链接库转码
- Openresty 编译
- 通过编译luaSQL调用ODBC连接Access以及给OpenResty(LuaJIT)编写简单的C扩展示例
- Luajit 编译脚本目录
- cocos2dx编译luajit备注
- nginx-openresty-keynote
- Nginx Openresty example
- 看看 Nginx + Lua (OpenResty)
- openResty-----nginx基础
- Openresty (nginx + lua)
- [JPA] javax.persistence.EntityNotFoundException: Unable to find com.duona.base.bean.Business with id
- BPM公文管理解决方案分享
- Hibernate注解关系映射 @One @Many
- iOS 键盘遮挡输入框解决方案
- Android 过滤特殊字符和emoji表情
- nginx静态编译luajit (openresty)
- WebService发布服务器的几种方法
- Mongodb 3.2 Java 显示指定字段 条件查询 分页排序
- PRD 使用Pentaho Metadata Editor(PME)生成的metadata做数据源(5)
- WIN 10 设置某个程序开机启动
- 关于页面兼容IE8所遇到的问题及解决
- React-Native常用第三方库
- 学习笔记-require.js
- JNI 之二 :java & c/c++ 相互通信及调用