kanade2010 / cpp11_muduo

c++11 implementation of muduo net lib and muduo asynclogging.
32 stars 12 forks source link

请问这代码如何编译呢?是linux平台,还是windows平台?CMake需要加什么参数或者设置呢? #1

Open xiaozia opened 4 years ago

zoujiaqing commented 2 years ago
mkdir build && cd build/
cmake ..
make

目前会报错,毕竟编译器这些年在升级,C++ 兼容性一直不太好,会报下面的错误:

zoujiaqing@BRIAN-LAPTOP:~/projects/cpp11_muduo/build$ make
[ 25%] Built target async_logging
[ 28%] Building CXX object CMakeFiles/muduo_server.dir/sources/muduo_network/EventLoopThreadPool.cpp.o
In file included from /home/zoujiaqing/projects/cpp11_muduo/includes/muduo_network/EventLoopThreadPool.hpp:6,
                 from /home/zoujiaqing/projects/cpp11_muduo/sources/muduo_network/EventLoopThreadPool.cpp:9:
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp: In member function ‘void myself::ptr_vector<T>::push_back(T* const&)’:
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:13:11: error: ‘stderr’ was not declared in this scope
   13 |   fprintf(stderr, "Error/(%s, %d): %s, abort.\n", __FILE__, __LINE__, Msg); abort();\
      |           ^~~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:45:3: note: in expansion of macro ‘ASSERT’
   45 |   ASSERT(v , "NULL point at ptr_vector push_back()");
      |   ^~~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:7:1: note: ‘stderr’ is defined in header ‘<cstdio>’; did you forget to ‘#include <cstdio>’?
    6 | #include <assert.h>
  +++ |+#include <cstdio>
    7 |
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:13:3: error: there are no arguments to ‘fprintf’ that depend on a template parameter, so a declaration of ‘fprintf’ must be available [-fpermissive]
   13 |   fprintf(stderr, "Error/(%s, %d): %s, abort.\n", __FILE__, __LINE__, Msg); abort();\
      |   ^~~~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:45:3: note: in expansion of macro ‘ASSERT’
   45 |   ASSERT(v , "NULL point at ptr_vector push_back()");
      |   ^~~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:13:3: note: (if you use ‘-fpermissive’, G++ will accept your code, but allowing the use of an undeclared name is deprecated)
   13 |   fprintf(stderr, "Error/(%s, %d): %s, abort.\n", __FILE__, __LINE__, Msg); abort();\
      |   ^~~~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:45:3: note: in expansion of macro ‘ASSERT’
   45 |   ASSERT(v , "NULL point at ptr_vector push_back()");
      |   ^~~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:13:77: error: there are no arguments to ‘abort’ that depend on a template parameter, so a declaration of ‘abort’ must be available [-fpermissive]
   13 |   fprintf(stderr, "Error/(%s, %d): %s, abort.\n", __FILE__, __LINE__, Msg); abort();\
      |                                                                             ^~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:45:3: note: in expansion of macro ‘ASSERT’
   45 |   ASSERT(v , "NULL point at ptr_vector push_back()");
      |   ^~~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp: In member function ‘std::unique_ptr<T> myself::ptr_vector<T>::pop_back()’:
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:13:11: error: ‘stderr’ was not declared in this scope
   13 |   fprintf(stderr, "Error/(%s, %d): %s, abort.\n", __FILE__, __LINE__, Msg); abort();\
      |           ^~~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:52:3: note: in expansion of macro ‘ASSERT’
   52 |   ASSERT( !m_vector.empty(), "'pop_back()' on empty container");
      |   ^~~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:13:11: note: ‘stderr’ is defined in header ‘<cstdio>’; did you forget to ‘#include <cstdio>’?
   13 |   fprintf(stderr, "Error/(%s, %d): %s, abort.\n", __FILE__, __LINE__, Msg); abort();\
      |           ^~~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:52:3: note: in expansion of macro ‘ASSERT’
   52 |   ASSERT( !m_vector.empty(), "'pop_back()' on empty container");
      |   ^~~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:13:3: error: there are no arguments to ‘fprintf’ that depend on a template parameter, so a declaration of ‘fprintf’ must be available [-fpermissive]
   13 |   fprintf(stderr, "Error/(%s, %d): %s, abort.\n", __FILE__, __LINE__, Msg); abort();\
      |   ^~~~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:52:3: note: in expansion of macro ‘ASSERT’
   52 |   ASSERT( !m_vector.empty(), "'pop_back()' on empty container");
      |   ^~~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:13:77: error: there are no arguments to ‘abort’ that depend on a template parameter, so a declaration of ‘abort’ must be available [-fpermissive]
   13 |   fprintf(stderr, "Error/(%s, %d): %s, abort.\n", __FILE__, __LINE__, Msg); abort();\
      |                                                                             ^~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:52:3: note: in expansion of macro ‘ASSERT’
   52 |   ASSERT( !m_vector.empty(), "'pop_back()' on empty container");
      |   ^~~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp: In member function ‘T*& myself::ptr_vector<T>::operator[](myself::ptr_vector<T>::size_type)’:
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:13:11: error: ‘stderr’ was not declared in this scope
   13 |   fprintf(stderr, "Error/(%s, %d): %s, abort.\n", __FILE__, __LINE__, Msg); abort();\
      |           ^~~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:59:3: note: in expansion of macro ‘ASSERT’
   59 |   ASSERT(n < size(), "operator[] n out of the border")
      |   ^~~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:13:11: note: ‘stderr’ is defined in header ‘<cstdio>’; did you forget to ‘#include <cstdio>’?
   13 |   fprintf(stderr, "Error/(%s, %d): %s, abort.\n", __FILE__, __LINE__, Msg); abort();\
      |           ^~~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:59:3: note: in expansion of macro ‘ASSERT’
   59 |   ASSERT(n < size(), "operator[] n out of the border")
      |   ^~~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:13:3: error: there are no arguments to ‘fprintf’ that depend on a template parameter, so a declaration of ‘fprintf’ must be available [-fpermissive]
   13 |   fprintf(stderr, "Error/(%s, %d): %s, abort.\n", __FILE__, __LINE__, Msg); abort();\
      |   ^~~~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:59:3: note: in expansion of macro ‘ASSERT’
   59 |   ASSERT(n < size(), "operator[] n out of the border")
      |   ^~~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:13:77: error: there are no arguments to ‘abort’ that depend on a template parameter, so a declaration of ‘abort’ must be available [-fpermissive]
   13 |   fprintf(stderr, "Error/(%s, %d): %s, abort.\n", __FILE__, __LINE__, Msg); abort();\
      |                                                                             ^~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:59:3: note: in expansion of macro ‘ASSERT’
   59 |   ASSERT(n < size(), "operator[] n out of the border")
      |   ^~~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp: In member function ‘void myself::ptr_vector<T>::resize(myself::ptr_vector<T>::size_type)’:
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:13:11: error: ‘stderr’ was not declared in this scope
   13 |   fprintf(stderr, "Error/(%s, %d): %s, abort.\n", __FILE__, __LINE__, Msg); abort();\
      |           ^~~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:92:3: note: in expansion of macro ‘ASSERT’
   92 |   ASSERT(s == this->size(), "'resize' error size asymmetry");
      |   ^~~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:13:11: note: ‘stderr’ is defined in header ‘<cstdio>’; did you forget to ‘#include <cstdio>’?
   13 |   fprintf(stderr, "Error/(%s, %d): %s, abort.\n", __FILE__, __LINE__, Msg); abort();\
      |           ^~~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:92:3: note: in expansion of macro ‘ASSERT’
   92 |   ASSERT(s == this->size(), "'resize' error size asymmetry");
      |   ^~~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:13:3: error: there are no arguments to ‘fprintf’ that depend on a template parameter, so a declaration of ‘fprintf’ must be available [-fpermissive]
   13 |   fprintf(stderr, "Error/(%s, %d): %s, abort.\n", __FILE__, __LINE__, Msg); abort();\
      |   ^~~~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:92:3: note: in expansion of macro ‘ASSERT’
   92 |   ASSERT(s == this->size(), "'resize' error size asymmetry");
      |   ^~~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:13:77: error: there are no arguments to ‘abort’ that depend on a template parameter, so a declaration of ‘abort’ must be available [-fpermissive]
   13 |   fprintf(stderr, "Error/(%s, %d): %s, abort.\n", __FILE__, __LINE__, Msg); abort();\
      |                                                                             ^~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:92:3: note: in expansion of macro ‘ASSERT’
   92 |   ASSERT(s == this->size(), "'resize' error size asymmetry");
      |   ^~~~~~
In file included from /home/zoujiaqing/projects/cpp11_muduo/sources/muduo_network/EventLoopThreadPool.cpp:9:
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_network/EventLoopThreadPool.hpp: At global scope:
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_network/EventLoopThreadPool.hpp:42:15: error: field ‘m_name’ has incomplete type ‘std::string’ {aka ‘std::__cxx11::basic_string<char>’}
   42 |   std::string m_name;
      |               ^~~~~~
In file included from /usr/include/c++/10/iosfwd:39,
                 from /usr/include/c++/10/memory:74,
                 from /home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:5,
                 from /home/zoujiaqing/projects/cpp11_muduo/includes/muduo_network/EventLoopThreadPool.hpp:6,
                 from /home/zoujiaqing/projects/cpp11_muduo/sources/muduo_network/EventLoopThreadPool.cpp:9:
/usr/include/c++/10/bits/stringfwd.h:74:11: note: declaration of ‘std::string’ {aka ‘class std::__cxx11::basic_string<char>’}
   74 |     class basic_string;
      |           ^~~~~~~~~~~~
/home/zoujiaqing/projects/cpp11_muduo/sources/muduo_network/EventLoopThreadPool.cpp: In member function ‘void muduo::EventLoopThreadPool::start()’:
/home/zoujiaqing/projects/cpp11_muduo/sources/muduo_network/EventLoopThreadPool.cpp:42:14: error: ‘buf’ was not declared in this scope
   42 |     snprintf(buf, sizeof buf, "%s%d", m_name.c_str(), i);
      |              ^~~
In file included from /home/zoujiaqing/projects/cpp11_muduo/includes/muduo_network/EventLoopThreadPool.hpp:6,
                 from /home/zoujiaqing/projects/cpp11_muduo/sources/muduo_network/EventLoopThreadPool.cpp:9:
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp: In instantiation of ‘void myself::ptr_vector<T>::push_back(T* const&) [with T = muduo::EventLoopThread]’:
/home/zoujiaqing/projects/cpp11_muduo/sources/muduo_network/EventLoopThreadPool.cpp:44:26:   required from here
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:13:10: error: ‘fprintf’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
   13 |   fprintf(stderr, "Error/(%s, %d): %s, abort.\n", __FILE__, __LINE__, Msg); abort();\
      |   ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/zoujiaqing/projects/cpp11_muduo/includes/muduo_logger/ptr_vector.hpp:45:3: note: in expansion of macro ‘ASSERT’
   45 |   ASSERT(v , "NULL point at ptr_vector push_back()");
      |   ^~~~~~
In file included from /usr/include/c++/10/cstdio:42,
                 from /usr/include/c++/10/ext/string_conversions.h:43,
                 from /usr/include/c++/10/bits/basic_string.h:6545,
                 from /usr/include/c++/10/string:55,
                 from /usr/include/c++/10/stdexcept:39,
                 from /usr/include/c++/10/system_error:41,
                 from /usr/include/c++/10/mutex:42,
                 from /home/zoujiaqing/projects/cpp11_muduo/includes/muduo_network/EventLoop.hpp:7,
                 from /home/zoujiaqing/projects/cpp11_muduo/sources/muduo_network/EventLoopThreadPool.cpp:10:
/usr/include/stdio.h:326:12: note: ‘int fprintf(FILE*, const char*, ...)’ declared here, later in the translation unit
  326 | extern int fprintf (FILE *__restrict __stream,
      |            ^~~~~~~
make[2]: *** [CMakeFiles/muduo_server.dir/build.make:173: CMakeFiles/muduo_server.dir/sources/muduo_network/EventLoopThreadPool.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:147: CMakeFiles/muduo_server.dir/all] Error 2
make: *** [Makefile:103: all] Error 2