Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 静态libgcc和静态libstdc++;不起作用_C++_Gcc_Static Libraries - Fatal编程技术网

C++ 静态libgcc和静态libstdc++;不起作用

C++ 静态libgcc和静态libstdc++;不起作用,c++,gcc,static-libraries,C++,Gcc,Static Libraries,我尝试使用-static-static libgcc-static libstdc++编译项目,以便静态链接库。但是,exec是使用动态链接库编译的。我尝试重新安装gcc和g++,但没有帮助。这相当于我的本地环境故障,因为在其他机器上它是静态链接的 ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, Bui

我尝试使用-static-static libgcc-static libstdc++编译项目,以便静态链接库。但是,exec是使用动态链接库编译的。我尝试重新安装gcc和g++,但没有帮助。这相当于我的本地环境故障,因为在其他机器上它是静态链接的

ELF 64-bit LSB  executable, x86-64, version 1 (GNU/Linux), 
dynamically linked (uses shared libs), for GNU/Linux 2.6.24, 
BuildID[sha1]=, not stripped
我有Ubuntu 14.10,gcc版本4.8.4


谢谢

我也有同样的问题。我能找到的最好的解释是:

另一方面,您的链接器可能会拾取动态(*.so) 阻止使用-static libstdc++和-static libgcc的库。 每个调用libgcc和libstdc++的库都应该静态链接 (当然,如果有静态版本可用)。

进一步挖掘,似乎还需要静态链接glibc(gcc默认使用glibc),还有更好的替代方案,如和

在两者之间,musl似乎是最近才被维护的,所以这就是我的想法。通过首先静态构建musl,我终于能够构建一个完全静态的二进制文件:

./configure --disable-shared --enable-wrapper=gcc && make && sudo make install
然后使用musl静态构建其他软件:

CC="/usr/local/musl/bin/musl-gcc" LDFLAGS="-static" ./configure

如果您想了解更多详细信息,您可以确切地看到我在这里所做的工作:

不太确定您希望我们对此做些什么:(为什么在有合适的标志静态链接的情况下它会动态链接。不知道。请给我们展示一个测试用例…..好的,所以我的exec依赖于其他静态库。即使我在同一台计算机上编译它们,然后链接它们,库也会动态链接,但是如果我在没有它们的情况下编译,exec会静态编译。堆栈覆盖低级问题不是指libgcc,而是指libc(libpthread也是如此)。另一方面,libgcc为异常处理提供了一些运行时支持,因此,如果静态libstdc++对前者的实现做出假设,那么将动态libgcc与静态libstdc++混合使用可能不是一个好主意。但无论如何,您链接的堆栈溢出文章根本没有解决这个问题。太棒了!这看起来更好吗r?如果没有,我想你应该能够建议编辑以改进措辞。