我正在构建一个带有大量额外模块的自定义版本的 Apache HTTPD。作为此过程的一部分,我链接到 PCRE 8.44,它运行良好。但是,lib/libpcrecpp.so.0.0.2
通过 显示 libgcc_s.so.1 的依赖关系/usr/bin/env -i ldd
。
我不想在生产服务器上安装 gcc,尤其是外联网生产服务器。我似乎找不到任何可以构建不链接到 libgcc 的 PCRE 的标志组合。我相当确定禁用 C++ 支持可以做到这一点,但这并不是最佳选择,我还没有真正尝试过。
有没有办法构建 PCRE 以使其不链接到 gcc?
当前设置为:
LDFLAGS=-Wl,-rpath,${PREFIX}/lib -Wl,-rpath,${PREFIX}/lib64 -L${PREFIX}/lib -L${PREFIX}/lib64
CFLAGS=-Wl,-rpath,${PREFIX}/lib -Wl,-rpath,${PREFIX}/lib64 -I${PREFIX}/include
CPPFLAGS=${CFLAGS}
export LDFLAGS CFLAGS CPPFLAGS PREFIX
./configure \
--prefix="${PREFIX}" \
--enable-pcre16 \
--enable-pcre32 \
--enable-jit \
--enable-utf \
&& make \
&& make install
(如果有人对更好的配置选项有建议我会听取。)
更新:关闭 pcre 的共享库似乎有效。需要进行测试以确保一切正常,但我认为我在需要的地方嵌入了静态链接 pcre,这对我来说是可以接受的。如果有人对如何构建共享库有想法没有链接到 gcc 我很想听到它。
更新 2:看起来 mod_security 确实如此不是想要使用 httpd 的内置 pcre 进行构建,所以我又陷入困境。
答案1
好的。真的解决了。结果发现httpd
我添加的额外内容实际上并不需要,libpcrecpp
所以我可以直接添加--disable-cpp
并完全跳过构建。如果我需要构建需要 C++ 支持的东西,我需要真正弄清楚这一点,但现在我只是不构建有问题的库,一切都很好。