我正在尝试迁移到 Developer Studio 12.5 并启用 C++11 选项。我的软件使用 /usr/sfw 中的 Oracle 提供的库链接 openssl。这似乎依赖于旧的 libgcc_s.so,而不是现在用于 C++ 11 STL 的 libgcc_s.so。所以我得到以下信息:
CC -o binary -B direct -z origin -std=c++11 object_files.o -Lblah/lib -R\$ORIGIN/../lib -lotherlib -L/usr/sfw/lib -R/usr/sfw/lib -lcrypto -lsocket
unused $ADDVERS specification from file '/opt/developerstudio12.5/lib/compilers/CC-gcc/gcc_version.map' for object 'libgcc_s.so'
version(s):
GCC_4.2.0
有没有办法让两个 libgcc_s.so 实例在一个二进制文件中共存,从 libcrypto 到一个,从 STL 到另一个?查看 Oracle 链接器和库文档显示了一些有希望的选项,例如 -B 组,但可能仅适用于 dlopen。
我意识到我可以只重新编译 openssl(或者可能是 libressl),但使用操作系统中的那个会更好,我的同事认为 Sun 的构建利用了 SPARC 上的硬件加密功能。