Hello!
2012/6/12 Wenhua Zhang <shi...@gmail.com>:
> 这里我还有一个问题,就是使用“ldd
> /usr/sbin/nginx”查看nginx依赖的库时,为什么有的机器上面输出的是“libpcre.so.3 =>
> /lib/x86_64-linux-gnu/libpcre.so.3
> (0x00007f5d39fee000)”,而有的机器上面输出的是"libpcre.so.0=> ..."。
> 这是由于打包机器和目标机器安装的 PCRE 的版本不同引起的吗?
是。
> nginx是如何去判断它依赖的库文件的位置和版本的呢?
>
这不是 nginx 去判断的,应该是你系统的 gcc 和 ld 是如何去搜索头文件和库文件的。
一个建议是自己专门打一个 pcre 的包,比如名叫 wenhua-pcre,然后安装到某个固定的位置,比如 /opt/pcre,然后在构造
ngx_openresty 时让 gcc 和 ld 只使用这个 pcre,而不论系统中安装的是何种版本的 pcre:
./configure --with-cc-opt="-I/opt/pcre/include" \
--with-ld-opt="-L/opt/pcre/lib -Wl,-rpath,/opt/pcre/lib"
同时让你打的 openresty 包依赖你的 wenhua-pcre 包,这样就可以有效避免潜在的混乱。
Regards,
-agentzh