Solaris SunStudio 12.4标准库链接问题
Solaris SunStudio 12.4 Standard Library Linking Issue
我正试图使用SunStudio 12.4从Solaris-10上的boost asio编译一个示例。使用GCC 4.9.2进行编译是可行的,但接下来我将需要支持这两个编译器,所以不能只切换。
CC-V输出:CC: Sun C++ 5.13 SunOS_sparc 2014/10/20
编译行:(对于每个cpp文件)
CC -m32 -std=c++11 -I./asio-1.10.6/include -I./boost/include/boost-1_58 -c *.cpp -o *.o
链接行:(注意*.o实际上是以前生成的所有对象文件的列表)
CC -m32 -L./boost/sparc/sun/release32/lib *.o -o httpServer -lCrun -lCstd -lxnet -lboost_system
问题:
我得到了一堆标准库的未解析符号(比如字符串、ios_base、locale等)。我在这里发布了链接器错误。
我强烈怀疑这与-std=c++11
的使用有关。我之所以包含此选项,是因为iterator_traits
存在编译问题。尽管iterator_traits
不是C++11的特性,但由于某些原因,SunStudio不能编译它,除非它是在C++11模式下编译的。关于iterator_traits
:的错误
Error: iterator_traits is not a member of std.
导致此编译失败的代码位于boostboost/detail/iterator.hpp
中。代码如下。
// (C) Copyright David Abrahams 2002.
// Distributed under the Boost Software License, Version 1.0. (See
// accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
#ifndef ITERATOR_DWA122600_HPP_
#define ITERATOR_DWA122600_HPP_
// This header is obsolete and will be deprecated.
#include <iterator>
namespace boost
{
namespace detail
{
using std::iterator_traits;
using std::distance;
} // namespace detail
} // namespace boost
#endif // ITERATOR_DWA122600_HPP_
包含和使用此标头的其他内容会生成Error: iterator_traits is not a member of boost::detail
之类的错误,然后还会生成其他语法错误,因为现在它认为以下所有代码都无效。
我尝试过的其他事情:
- 在-lRun之前添加-lC(链接器找不到该库)
- 添加-lc(类似问题)
- 已检查SUNWspro/libs目录,发现libCrun.so和libCstd.so都存在
- 将-lCstd置于-lCrun之前
其他(不太相关)信息:
- SPARC
- 有问题的asio示例是httpServer(我相信在示例中它位于服务器目录下)
来自文档:
在C++11模式中,CC编译器使用g++ABI和Oracle Solaris Studio附带的g++运行时库。对于本版本使用g++运行库的4.8.2版本。
ABI描述生成的对象代码中的低级细节。使用不同ABI的模块无法成功连接在一起进入程序这意味着您必须在所有程序中的模块,或者没有模块。
因此,您也必须在链接器阶段指定"--std=c++11"。你现在没有这么做。
- 使用jsoncpp库时出现链接问题
- Cmake 链接问题:未定义对 Button::mousePressEvent(QGraphicsSceneMouseE
- 如何将GTest与CMake一起使用?遵循谷歌指南时的链接问题
- 未解决的外部链接问题
- 'make check' GLIBC 运行时的链接问题
- 在树莓派上用libtorch构建程序时的链接问题
- 野牛弹性链接问题
- 与 AWS 开发工具包的链接问题
- Qt & Firebase C++ SDK 在 iOS 上的链接问题
- 链接问题 boost::p ython::numpy.
- 与 32 位共享对象的链接问题
- 在单元测试项目中包括 .c 文件,并从多个 cpp 文件访问它而不会出现链接问题
- 安卓链接问题
- LLVM 传递链接问题:未定义的符号
- Cmake Mac OSX库链接问题:在Linux上进行编译,但在Mac上进行了编译
- 用libclang解析源文件 - 链接问题包括文件
- C / C++链接问题与非常简单的设置
- Zbar 在 vs2015 链接问题
- Vulkan + GLFW + Cmake在Linux环境下的链接问题
- TFS构建由于链接问题而失败