3

我想在我的电脑上使用FADE 。所以,我必须使用 libaws++,这是一个允许与 Amazon Web Services 通信的 C++ 库。

好的,这是我的问题:

libaws++的网站不可用。我用谷歌搜索“libaws++”,只找到了libaws。我不知道 libaws 是否是 libaws++。他们都曾经与亚马逊网络服务通信。所以我从sourceforge下载 libaws 。

这是我安装 libaws 的过程:

  1. tar libaws-0.9.2.tar.gz
  2. cd libaws-0.9.2
  3. cp ~/libaws_patch_for_fade.patch libaws_patch_for_fade.patch(cp 到 libaws-0.9.2 的补丁)
  4. 补丁 -p2 -i libaws_patch_for_fade.patch
  5. mkdir libawsbuild
  6. cd libawsbuild
  7. 制作..
  8. 制作

并出现错误:

    [ 28%] Building CXX object src/CMakeFiles/aws.dir/api/connectionpool.cpp.o
In file included from /home/lx/Nutstore/cloud/libaws-0.9.2/include/libaws/aws.h:                                                                                        26:0,
                 from /home/lx/Nutstore/cloud/libaws-0.9.2/include/libaws/connec                                                                                        tionpool.h:22,
                 from /home/lx/Nutstore/cloud/libaws-0.9.2/src/api/connectionpoo                                                                                        l.cpp:16:
/home/lx/Nutstore/cloud/libaws-0.9.2/include/libaws/sqsresponse.h:124:9: error:                                                                                         a€?uint64_ta€? does not name a type
In file included from /home/lx/Nutstore/cloud/libaws-0.9.2/include/libaws/aws.h:                                                                                 29:0,
                 from /home/lx/Nutstore/cloud/libaws-0.9.2/include/libaws/connec                                                                                        tionpool.h:22,
                 from /home/lx/Nutstore/cloud/libaws-0.9.2/src/api/connectionpoo  

/home/lx/Nutstore/cloud/libaws-0.9.2/include/libaws/sqsresponse.h:124:9: error:                                                                                         a€?uint64_ta€? does not name a type
In file included from /home/lx/Nutstore/cloud/libaws-0.9.2/include/libaws/aws.h:                                                                                        29:0,
                 from /home/lx/Nutstore/cloud/libaws-0.9.2/include/libaws/connec                                                                                        tionpool.h:22,
                 from /home/lx/Nutstore/cloud/libaws-0.9.2/src/api/connectionpoo                                                                                        l.cpp:16:
/home/lx/Nutstore/cloud/libaws-0.9.2/include/libaws/sdbresponse.h:105:20: warning: type qualifiers ignored on function return type [-Wignored-qualifiers]
.....
make[2]: *** [src/CMakeFiles/aws.dir/api/connectionpool.cpp.o] Error 1
make[1]: *** [src/CMakeFiles/aws.dir/all] Error 2
make: *** [all] Error 2  

我在谷歌和stackoverflow上搜索并没有得到任何有用的信息。

4

2 回答 2

1

添加#include <stdint.h>到这些头文件的顶部。

uint64_t 是标准类型,应该可以正常工作。

(当然,除非你在一些不支持 64 位整数的奇怪平台上......)

于 2012-12-13T14:11:12.483 回答
1

刚刚用 gnu 编译器 4.9.x 编译了这个。使用较新版本的编译器,编译 libaws 需要更多步骤。

这是我必须做的:

1) 将以下行添加到 libaws-0.9.2/include/libaws/*.h 的头文件中,在所有其他包含语句之后:

#include <stdint.h>

2) 在所有其他包含语句之后,将以下行添加到 libaws-0.9.2/include/libaws/aws.h:

#include <getopt.h>

3) 如果您使用的是最新版本的 Gnu C++ 编译器,则需要修改 CMAKE 文件以向编译器添加一些标志,以便 libaws 中使用的旧 C++ 语法不会引发编译器错误。

将此行添加到 CMakeCompiler.txt,在所有其他 CMAKE_CXX_FLAGS 命令之后,在第 82 行附近(应该是空白行):

SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive -Wignored-qualifiers")

仅供参考:如果您使用的是 Gnu C 编译器,则可能需要在其他 CMAKE 命令的末尾为 C 部分添加类似的行。文件末尾这样的东西可能会起作用,但我还没有尝试过:

SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fpermissive -Wignored-qualifiers")

完成后,以下是编译步骤:

cd libaws-0.9.2
mkdir libawsbuild
cd libawsbuild
cmake ..
make

当这成功时,您可能还需要将 config.h 从 libawsbuild/include 复制到 libaws-0.9.2/include/libaws 以便编译器在编译任何代码时在它期望的位置找到 config.h '正在写作以实际使用 libaws。(尽管这可能只是我个人 makefile 的配置方式。不要引用我的话。)

于 2014-12-18T17:08:45.093 回答