Hello!
2013/12/5 yujinqiuustb:
> 由于线上环境的特殊原因,不能直接使用openresty, 因此只能采用nginx 和 lua-nginx-module 手动编译. 其中由于特殊原因线上是以普通工作账号运行(非root), 因此在安装luajit的时候需要指定特殊的路径,同时为了后续运维方便,不想export LD_LIBRARY_PATH 方式来编译集成luajit.
除了在运行时指定 LD_LIBRARY_PATH 环境变量,你还可以在编译时指定 RPATH,即
./configure --with-ld-opt="-Wl,-rpath,/path/to/luajit/lib"
openresty 的构建系统就是这么干的。
另外,我看不出 root 权限和这里的事情有什么关系。
这样动态链接库的搜索路径会被编译进最终的可执行文件的 RPATH 头中。
> 请教如何 把 luajit 静态编译到 nginx 进去 (不用root权限).
>
最简单的办法是临时移除掉 luajit 的 so 文件(即 libluajit-5.1.so* 文件),只保留 .a 文件(即
libluajit-5.1.a),这样 ld 在链接时找不到 .so 就只好静态链接 .a 文件了。
Regards,
-agentzh