在cygwin中测试新的Boost安装时出现cpp错误

时间:2018-10-25 22:47:07

标签: c++ boost cygwin

我通过下载boost_1_67_0.tar.bz2文件并将其解压缩到以下位置来安装boost:

/cygdrive/c/no_admin_programs/boost_1_67_0

我已经在文件test.cpp中输入了以下内容:

#include <boost/lambda/lambda.hpp>
#include <iostream>
#include <iterator>
#include <algorithm>

int main()
{
    using namespace boost::lambda;
    typedef std::istream_iterator<int> in;

    std::for_each(
        in(std::cin), in(), std::cout << (_1 * 3) << " ");
}

并在终端中输入以下内容:

c++ -I /cygdrive/c/no_admin_programs/boost_1_67_0 test.cpp

As a result, the following error is shown: 
In file included from /usr/lib/gcc/x86_64-pc-cygwin/7.3.0/include/c++/cstdlib:75:0,
                 from /usr/lib/gcc/x86_64-pc-cygwin/7.3.0/include/c++/bits/stl_algo.h:59,
                 from /usr/lib/gcc/x86_64-pc-cygwin/7.3.0/include/c++/algorithm:62,
                 from /cygdrive/c/no_admin_programs/boost_1_67_0/boost/core/swap.hpp:25,
                 from /cygdrive/c/no_admin_programs/boost_1_67_0/boost/utility/swap.hpp:15,
                 from /cygdrive/c/no_admin_programs/boost_1_67_0/boost/tuple/detail/tuple_basic.hpp:40,
                 from /cygdrive/c/no_admin_programs/boost_1_67_0/boost/tuple/tuple.hpp:28,
                 from /cygdrive/c/no_admin_programs/boost_1_67_0/boost/lambda/core.hpp:30,
                 from /cygdrive/c/no_admin_programs/boost_1_67_0/boost/lambda/lambda.hpp:14,
                 from test.cpp:1:
/usr/include/stdlib.h:91:7: error: expected initializer before ‘__alloc_size2’
       __alloc_size2(1, 2) _NOTHROW;
       ^~~~~~~~~~~~~
In file included from /usr/lib/gcc/x86_64-pc-cygwin/7.3.0/include/c++/cstdlib:75:0,
                 from /usr/lib/gcc/x86_64-pc-cygwin/7.3.0/include/c++/bits/stl_algo.h:59,
                 from /usr/lib/gcc/x86_64-pc-cygwin/7.3.0/include/c++/algorithm:62,
                 from /cygdrive/c/no_admin_programs/boost_1_67_0/boost/core/swap.hpp:25,
                 from /cygdrive/c/no_admin_programs/boost_1_67_0/boost/utility/swap.hpp:15,
                 from /cygdrive/c/no_admin_programs/boost_1_67_0/boost/tuple/detail/tuple_basic.hpp:40,
                 from /cygdrive/c/no_admin_programs/boost_1_67_0/boost/tuple/tuple.hpp:28,
                 from /cygdrive/c/no_admin_programs/boost_1_67_0/boost/lambda/core.hpp:30,
                 from /cygdrive/c/no_admin_programs/boost_1_67_0/boost/lambda/lambda.hpp:14,
                 from test.cpp:1:
/usr/include/stdlib.h:144:63: error: expected initializer before ‘__alloc_size2’
 void *reallocarray(void *, size_t, size_t) __result_use_check __alloc_size2(2, 3);
                                                               ^~~~~~~~~~~~~
In file included from /usr/lib/gcc/x86_64-pc-cygwin/7.3.0/include/c++/bits/stl_algo.h:59:0,
                 from /usr/lib/gcc/x86_64-pc-cygwin/7.3.0/include/c++/algorithm:62,
                 from /cygdrive/c/no_admin_programs/boost_1_67_0/boost/core/swap.hpp:25,
                 from /cygdrive/c/no_admin_programs/boost_1_67_0/boost/utility/swap.hpp:15,
                 from /cygdrive/c/no_admin_programs/boost_1_67_0/boost/tuple/detail/tuple_basic.hpp:40,
                 from /cygdrive/c/no_admin_programs/boost_1_67_0/boost/tuple/tuple.hpp:28,
                 from /cygdrive/c/no_admin_programs/boost_1_67_0/boost/lambda/core.hpp:30,
                 from /cygdrive/c/no_admin_programs/boost_1_67_0/boost/lambda/lambda.hpp:14,
                 from test.cpp:1:
/usr/lib/gcc/x86_64-pc-cygwin/7.3.0/include/c++/cstdlib:138:11: error: ‘::calloc’ has not been declared
   using ::calloc;
           ^~~~~~

我尝试将<cstdlib>包括在内都无济于事。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

如果您还安装了cygwin提供的boost软件包 无需尝试使用boost_1_67_0.tar.bz2

$ cygcheck -c libboost-devel
Cygwin Package Information
Package              Version        Status
libboost-devel       1.66.0-1       OK

您的程序仅能正常工作

$ c++ test.cpp

$ ./test.exe
4
12 5
15 7
21 9
27