在生成可执行文件时,我们是否同时使用 libstdc++.a 和 libstdc++.so
Do we use libstdc++.a and libstdc++.so at the same time when generating executable?
如果我选择这样做:
gcc my.cpp -lstdc++
它与libstdc++.so链接,对吧?但是代码中有一些 c/c++ 初始化部分(全局/静态变量/对象、atexit() 函数等),似乎它们也应该需要链接到 libstdc++.a 文件。
所以我的问题是,即使我指定与 .so 文件链接,链接命令是否总是出于某种原因使用 libstdc++.a?
谢谢。
gcc my.cpp -lstdc++
这通常是错误的做法。相反,您应该这样做:
g++ my.cpp
它与libstdc++.so链接,对吧?
取决于 GCC 的配置和安装方式,但通常是。
但是代码中有一些 c/c++ 初始化部分(全局/静态变量/对象、atexit() 函数等),似乎它们也应该需要链接到 libstdc++.a 文件。
这是错误的。你从哪里得到这种错误的印象?
所以我的问题是,链接命令是否总是使用 libstdc++.a
不,通常不会。
相关文章:
- 为什么C++可执行文件在与较新的libstdc++.so链接时运行得更快?
- libstdc++.so.6:添加符号时出错:命令行中缺少 DSO
- g++ libstdc++.so.6:从 4.8.5 升级到 GCC 版本 7.3.0 后找不到版本 'CXXABI_1.3.9'
- /lib/libstdc++.so.6:没有可用的版本信息
- Anaconda ImportError: /usr/lib64/libstdc++.so.6: 找不到版本 'GLIBCXX_3.4.21'
- 如何减小C++标准库libstdc++.so文件大小
- libstdc++.so 在使用 Patchelf 和备用 glibc 版本时找不到
- 如何手动设置'libstdc++.so.6'使用哪个版本而不是使用最新版本?
- 需要libstdc so.6(glibcxx_3.4.21)(64位)(CentOS 7错误)
- ld.so.1:protoc:fatal:libstdc++.so.6:在 Solaris 11 中找不到版本"GLIBCXX_3.4.20"
- Docker compose libstdc++.so.6 GLIBCXX_3.4.21 not found
- GLIBCXX(libstdc++.so.6)与gcc版本之间的关系
- 在生成可执行文件时,我们是否同时使用 libstdc++.a 和 libstdc++.so
- /lib64/libstdc++.so.6 not found CentOS 7.3
- 在同一系统上有多个GCC的情况下,使用哪个版本的libstdc++.so
- 如何在使用旧版本gcc的系统上动态链接到libc.so.6、libstdc++.so.6的本地副本
- "/usr/lib/libstdc .so.6: version `GLIBCXX_3.4.15' not found"是什么意思,我该如何解决?
- "/usr/lib/libstdc++.so.6: version `GLIBCXX_3.4.15' not found`",如何解决?
- /usr/lib/x86_64-linux-gnu/libstdc++.so.6:未找到版本 CXXABI_1.3.8'
- 从新发行版和不同发行版加载LD_PRELOAD libstdc++.so.6和libc.so.6时出现浮点异常