使用命令“make”时发生libaws c错误

时间:2012-12-13 13:59:39

标签: c++

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

好的,这是我的问题:

libaws ++的website不可用。我用谷歌搜索“libaws ++”,只发现了libaws。我不知道libaws是否是libaws ++。他们都曾经与Amazon Web Services进行通信。所以我从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. patch -p2 -i libaws_patch_for_fade.patch
  5. mkdir libawsbuild
  6. cd libawsbuild
  7. cmake ..
  8. 使
  9. 错误发生:

        [ 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  
    

    我搜索了Google和stackoverflow,但没有得到任何有用的信息。

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

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

这是我必须做的事情:

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

#include <stdint.h>

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

#include <getopt.h>

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

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

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,以便编译器在编译时找到它所需的位置,当您编译时无论你编写什么代码来实际使用libaws。 (虽然这可能只是我个人makefile的配置方式。不要引用我的话。)