如何在不链接到 gcc 的情况下构建 PCRE 8.44

如何在不链接到 gcc 的情况下构建 PCRE 8.44

我正在构建一个带有大量额外模块的自定义版本的 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++ 支持的东西,我需要真正弄清楚这一点,但现在我只是不构建有问题的库,一切都很好。

相关内容