如何正确捆绑 libstdc++.so.*?

Irf*_*rfy 2 c++ autotools gnu-make libstdc++ c++11

如何正确定位libstdc++.so.*用于编译 autotools 项目,以便将其与发行版捆绑在一起?

在我们团队切换到 C++11 后,我们需要将新的 libstdc++.so.6 与我们软件的每个发行版捆绑在一起,但是如何正确找到该库?

  • 赛格温: /lib/gcc/x86_64-pc-cygwin/5.2.0
  • Linux: /usr/lib64
  • 自定义安装: /usr/local/gcc-5.2.0/lib64

我已经尝试过:

install-exec-local:
    cp $(shell dirname $(shell which ${CXX}))/../lib64/libstdc++.so.6 ${prefix}/lib
Run Code Online (Sandbox Code Playgroud)

(而不是make dist,我们make install进入一个配置的前缀然后捆绑前缀)

这有效,但不适用于 Cygwin,我不确定它是否适用于其他平台,因此我的问题。

编辑

有关与软件捆绑的基本原理,请参阅此问题libstdc++.so它运作良好。我们还使用dlopen加载.so依赖的 s,libstdc++.so因此静态链接比听起来更难。

唯一的问题是定位libstdc++.so.6make dist时间(或我们的等价物),让我可以cp它为我们分发的${prefix}/lib目录,前焦油gzip压缩,并将其提供给客户。理想情况下,我正在寻找类似g++ --print-path-to-libstdc++.so.

运行软件的目标系统有一个较旧 libstdc++.so的 .

Ser*_*kov 5

g++ -print-file-name=libstdc++.so