【发布时间】:2019-07-15 22:48:29
【问题描述】:
我按照如何在 Solaris here 上安装 AWS C++ SDK 的指南进行操作,并成功安装了它。问题是安装的 AWS 库是 32 位而不是 64 位。默认情况下,AWS 会尝试链接到我的操作系统上的 64 位库文件,但由于 AWS 库是 32 位的,因此会导致以下错误:
ld: fatal: file /usr/lib/64/libssl.so: wrong ELF class: ELFCLASS64
ld: fatal: file processing errors. No output written to libaws-cpp-sdk-core.so
collect2: error: ld returned 1 exit status
gmake[2]: *** [aws-cpp-sdk-core/CMakeFiles/aws-cpp-sdk-core.dir/build.make:2480: aws-cpp-sdk-core/libaws-cpp-sdk-core.so] Error 1
gmake[1]: *** [CMakeFiles/Makefile2:173: aws-cpp-sdk-core/CMakeFiles/aws-cpp-sdk-core.dir/all] Error 2
gmake: *** [Makefile:128: all] Error 2
在其中一个 .so 文件(例如 libaws-cpp-sdk-core.so)上运行 file 会返回以下内容:
ELF 32-bit LSB dynamic lib 80386 Version 1, dynamically linked, not stripped
对我的操作系统上已有的库文件(例如 libssl.so)执行相同操作会返回以下内容:
ELF 64-bit LSB dynamic lib AMD64 Version 1, dynamically linked, not stripped
通过将 AWS 链接到它尝试链接到的库文件的 32 位版本,我已经能够在 32 位中运行所有内容,但是我找不到任何有关如何以 64 位和我不知道还能去哪里看。非常感谢任何和所有帮助。
【问题讨论】:
-
您将不得不将 SDK 重新构建为 64 位。副手,设置
CFLAGS=-m64和CXXFLAGS=-m64很有可能成功。 -
@AndrewHenle 这些只是我可以在运行 cmake/gmake 时在命令行中添加的标志,还是我必须在每次在 makefile 中找到它们时更新它们的值?
-
查看stackoverflow.com/questions/10085945/… 可能就像在运行
cmake之前运行export CFLAGS=-m64和export CXXFLAGS=-m64一样简单。 -
@AndrewHenle 成功了。非常感谢您的帮助。
标签: c++ amazon-web-services amazon-s3 aws-sdk solaris