在Solaris系统上构建AWS C++ SDK失败,寻求技术帮助
搞定这个Solaris上编译AWS C++ SDK的问题不难,我来一步步帮你解决:
首先处理时钟偏移警告
你看到的Clock skew detected是因为系统时间和构建文件的修改时间不一致,这会导致编译过程混乱。先解决这个:
- 如果有root权限,直接同步系统时间:
ntpdate pool.ntp.org - 没有root权限的话,更新所有构建文件的修改时间:
cd /workspace/dmoini/sdk_build find . -type f -exec touch {} \; cd .deps find . -type f -exec touch {} \;
核心编译错误的解决(feature_tests.h报错)
这个错误是Solaris的头文件检查机制导致的——它要求编译时指定符合POSIX/UNIX标准的宏,而你的GCC默认没有设置这些。加上以下编译选项就能解决:
修改后的CMake构建命令
清理之前的构建文件后,运行这个命令:
cd /workspace/dmoini/sdk_build rm -rf ./* cmake ../aws-sdk-cpp/ -DCMAKE_BUILD_TYPE=Debug -DBUILD_ONLY="s3" \ -DTARGET_ARCH=solaris \ -DCMAKE_C_FLAGS="-D_POSIX_C_SOURCE=200112L -D__EXTENSIONS__ -lsocket -lnsl" \ -DCMAKE_CXX_FLAGS="-D_POSIX_C_SOURCE=200112L -D__EXTENSIONS__ -lsocket -lnsl" \ -DCMAKE_EXE_LINKER_FLAGS="-lsocket -lnsl" \ -DCMAKE_SHARED_LINKER_FLAGS="-lsocket -lnsl"
然后执行编译:
gmake
命令参数说明
-DTARGET_ARCH=solaris:强制CMake识别当前平台为Solaris,避免它误判成Linux(你之前的输出里显示Generating linux build config,这是个隐患)-D_POSIX_C_SOURCE=200112L:告诉编译器使用POSIX 2001标准,满足Solaris头文件的检查要求-D__EXTENSIONS__:启用Solaris的系统扩展功能,确保依赖库能正常编译-lsocket -lnsl:链接Solaris必需的网络库,AWS SDK依赖这些库进行网络通信
验证
如果编译顺利完成,你就能在构建目录里找到S3相关的SDK库了。如果还有其他依赖问题,可以检查AWS C++ SDK的依赖文档,确保你已经安装了所有必需的系统库(比如OpenSSL、zlib等)。
内容的提问来源于stack exchange,提问作者dmoini
相关产品推荐
相关产品推荐

