MhLiao / TextBoxes_plusplus

TextBoxes++: A Single-Shot Oriented Scene Text Detector
Other
956 stars 281 forks source link

Install Instruction for Ubuntu 14.04 #29

Open jmrichardson opened 6 years ago

jmrichardson commented 6 years ago

Finally got TB++ to compile and thought I would share how I did it. Hopefully, it will help someone:

# Install dependencies (everything but the kitchen sink)
sudo apt-get install -y ant autoconf autoconf-archive automake binutils-dev bison build-essential checkinstall cmake curl cython default-jdk doxygen $extra_packages flex g++ gfortran git libatlas-base-dev libatlas-dev libavcodec-dev libavformat-dev libboost-all-dev libdc1394-22 libdc1394-22-dev libdouble-conversion-dev libdwarf-dev libedit-dev libeigen3-dev libelf-dev libevent-dev libfaac-dev libgdal-dev libgflags-dev libgoogle-glog-dev libgphoto2-dev libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev libgtk2.0-dev libhdf5-dev libhdf5-serial-dev libiberty-dev libjasper-dev libjemalloc-dev libjpeg8-dev libjpeg-dev libkrb5-dev liblapacke-dev libleveldb-dev liblmdb-dev liblz4-dev liblzma-dev libmatio-dev libmp3lame-dev libnuma-dev libopenblas-dev libopencore-amrnb-dev libopencore-amrwb-dev libopencv-dev libopenexr-dev libpng12-dev libpng-dev libprotobuf-dev libpthread-stubs0-dev libpython3-dev libpython-dev libqt4-dev libqt5opengl5 libqt5opengl5-dev libsasl2-dev libsnappy-dev libssl-dev libswscale-dev libtbb-dev libtheora-dev libtiff4-dev libtiff5-dev libtool libunwind8-dev libv4l-dev libvorbis-dev libvtk6-dev libwebp-dev libx264-dev libxine2-dev libxine-dev libxvidcore-dev make openssh-server pkg-config protobuf-compiler python3-dev python3-numpy python3-tk python-dev python-matplotlib python-numpy python-opencv python-pil python-pip python-protobuf python-scipy python-skimage python-tk qt5-default qtbase5-dev unzip v4l-utils wget x264 yasm zlib1g-dev

# Install Nvidia driver
sudo add-apt-repository ppa:graphics-drivers/ppa
sudo apt-get update
sudo apt-get install nvidia-390
sudo reboot
sudo lsmod | grep nvidia

# Install Cuda
cd ~/Downloads
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1404/x86_64/cuda-repo-ubuntu1404_8.0.61-1_amd64.deb
sudo dpkg -i cuda-repo-ubuntu1604_8.0.61-1_amd64.deb
sudo apt-get update
sudo apt-get install -y cuda-8-0

# Install cuDNN - https://developer.nvidia.com/rdp/cudnn-download
# Download cuDNN v5.1 (Jan 20, 2017), for CUDA 8.0
mv "cudnn-8.0-linux-x64-v5.1.solitairetheme8" "cudnn-8.0-linux-x64-v5.1.tgz"
tar xvfz cudnn-8.0-linux-x64-v5.1.tgz
cd cuda
sudo cp -P lib64/* /usr/local/cuda/lib64/
sudo cp include/cudnn.h /usr/local/cuda/include

# Install opencv 3.0.0
cd ~/Downloads
wget https://github.com/opencv/opencv/archive/3.0.0.zip
unzip 3.0.0.zip
mv opencv-3.0.0 OpenCV
cd OpenCV
vi  ./modules/cudalegacy/src/graphcuts.cpp
    change #if !defined (HAVE_CUDA) || defined (CUDA_DISABLER)
    to #if !defined (HAVE_CUDA) || defined (CUDA_DISABLER) || (CUDART_VERSION >= 8000)
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D WITH_OPENGL=ON -DFORCE_VTK=ON -D WITH_TBB=ON -D WITH_GDAL=ON -D WITH_XINE=ON -DBUILD_EXAMPLES=ON -D ENABLE_PRECOMPILED_HEADERS=OFF -D WITH_QT=ON -D WITH_V4L=ON ..
make -j8
sudo make install
sudo ldconfig

# Install Torch (need older version to play nice with CRNN dependencies)
cd ~
git clone https://github.com/torch/distro.git ~/torch --recursive
cd torch
git checkout e21ee70
rm -rf ~/torch/extra/moses
cd ~/torch; bash install-deps;
./install.sh
vi ~/.bashrc
    export PATH=$PATH:/home/john/torch/install/bin
. ~/.bashrc

# Install CRNN dependencies

# Install folly
cd ~/Downloads
git clone -b v0.35.0  --depth 1 https://github.com/facebook/folly
cd folly/folly
autoreconf -ivf
./configure
make
sudo make install
sudo ldconfig

# Install fbthrift
cd ~/Downloads
git clone -b v0.24.0  --depth 1 https://github.com/facebook/fbthrift
cd fbthrift/thrift
autoreconf -ivf
./configure
make
sudo make install

# Install thpp
cd ~/Downloads
git clone -b v1.0 https://github.com/facebook/thpp
cd thpp/thpp
rm -rf gtest-1.7.0 gtest-1.7.0.zip
curl -JLO https://github.com/google/googletest/archive/release-1.7.0.zip
unzip googletest-release-1.7.0.zip
mv googletest-release-1.7.0 gtest-1.7.0
unzip googletest-release-1.7.0.zip
mv googletest-release-1.7.0 gtest-1.7.0
cd ~/Downloads/thpp/thpp
mkdir -p build
cd build
export Torch_DIR=~/torch/install/share/cmake/torch
cmake ..
make
sudo make install

# fblualib
cd ~/Downloads
git clone -b v1.0 https://github.com/facebook/fblualib
cd fblualib/fblualib
./build.sh

# Install TextboxesPlusPlus
cd /usr/lib/x86_64-linux-gnu
sudo ln -s libhdf5.so.7.0.0 libhdf5_serial.so
sudo ln -s libhdf5_hl.so.7 libhdf5_serial_hl.so
sudo add-apt-repository ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get install gcc-5 g++-5
cd ~
git clone https://github.com/MhLiao/TextBoxes_plusplus.git
cd TextBoxes_plusplus
cp Makefile.config.example Makefile.config
vi Makefile.config
    Uncomment USE_CUDNN
    Uncomment OPENCV_VERSION
    CUSTOM_CXX := /usr/bin/g++-5
make -j4
make py
cd crnn/src
sh build_cpp.sh
sudo pip install matplotlib
sudo pip install shapely
sudo pip install skimage.io
MhLiao commented 6 years ago

@jmrichardson Thank you for your instruction!

LaviLiu commented 6 years ago

Can you share the content of Makefile.config for us ? Thank you any way.

jmrichardson commented 6 years ago

A few things that caused problems for me:

Here is the Makefile.config that I used:

## Refer to http://caffe.berkeleyvision.org/installation.html
# Contributions simplifying and improving our build system are welcome!

# cuDNN acceleration switch (uncomment to build with cuDNN).
USE_CUDNN := 1

# CPU-only switch (uncomment to build without GPU support).
# CPU_ONLY := 1

# uncomment to disable IO dependencies and corresponding data layers
# USE_OPENCV := 0
# USE_LEVELDB := 0
# USE_LMDB := 0

# uncomment to allow MDB_NOLOCK when reading LMDB files (only if necessary)
#       You should not set this flag if you will be reading LMDBs with any
#       possibility of simultaneous read and write
# ALLOW_LMDB_NOLOCK := 1

# Uncomment if you're using OpenCV 3
OPENCV_VERSION := 3

# To customize your choice of compiler, uncomment and set the following.
# N.B. the default for Linux is g++ and the default for OSX is clang++
CUSTOM_CXX := /usr/bin/g++-5

# CUDA directory contains bin/ and lib/ directories that we need.
CUDA_DIR := /usr/local/cuda
# On Ubuntu 14.04, if cuda tools are installed via
# "sudo apt-get install nvidia-cuda-toolkit" then use this instead:
# CUDA_DIR := /usr

# CUDA architecture setting: going with all of them.
# For CUDA < 6.0, comment the *_50 lines for compatibility.
CUDA_ARCH := -gencode arch=compute_30,code=sm_30 \
                -gencode arch=compute_35,code=sm_35 \
                -gencode arch=compute_50,code=sm_50 \
                -gencode arch=compute_52,code=sm_52 \
                -gencode arch=compute_60,code=sm_60 \
                -gencode arch=compute_61,code=sm_61 \
                -gencode arch=compute_61,code=compute_61

# BLAS choice:
# atlas for ATLAS (default)
# mkl for MKL
# open for OpenBlas
# BLAS := atlas
BLAS := open
# Custom (MKL/ATLAS/OpenBLAS) include and lib directories.
# Leave commented to accept the defaults for your choice of BLAS
# (which should work)!
# BLAS_INCLUDE := /path/to/your/blas
# BLAS_LIB := /path/to/your/blas

# Homebrew puts openblas in a directory that is not on the standard search path
# BLAS_INCLUDE := $(shell brew --prefix openblas)/include
# BLAS_LIB := $(shell brew --prefix openblas)/lib

# This is required only if you will compile the matlab interface.
# MATLAB directory should contain the mex binary in /bin.
# MATLAB_DIR := /usr/local
# MATLAB_DIR := /Applications/MATLAB_R2012b.app

# NOTE: this is required only if you will compile the python interface.
# We need to be able to find Python.h and numpy/arrayobject.h.
PYTHON_INCLUDE := /usr/include/python2.7 \
                /usr/lib/python2.7/dist-packages/numpy/core/include
# Anaconda Python distribution is quite popular. Include path:
# Verify anaconda location, sometimes it's in root.
# ANACONDA_HOME := $(HOME)/anaconda2
# PYTHON_INCLUDE := $(ANACONDA_HOME)/include \
                $(ANACONDA_HOME)/include/python2.7 \
                $(ANACONDA_HOME)/lib/python2.7/site-packages/numpy/core/include \

# Uncomment to use Python 3 (default is Python 2)
# PYTHON_LIBRARIES := boost_python3 python3.5m
# PYTHON_INCLUDE := /usr/include/python3.5m \
#                 /usr/lib/python3.5/dist-packages/numpy/core/include

# We need to be able to find libpythonX.X.so or .dylib.
PYTHON_LIB := /usr/lib
# PYTHON_LIB := $(ANACONDA_HOME)/lib

# Homebrew installs numpy in a non standard path (keg only)
# PYTHON_INCLUDE += $(dir $(shell python -c 'import numpy.core; print(numpy.core.__file__)'))/include
# PYTHON_LIB += $(shell brew --prefix numpy)/lib

# Uncomment to support layers written in Python (will link against Python libs)
# WITH_PYTHON_LAYER := 1

# Whatever else you find you need goes here.
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib

# If Homebrew is installed at a non standard location (for example your home directory) and you use it for general dependencies
# INCLUDE_DIRS += $(shell brew --prefix)/include
# LIBRARY_DIRS += $(shell brew --prefix)/lib

# Uncomment to use `pkg-config` to specify OpenCV library paths.
# (Usually not necessary -- OpenCV libraries are normally installed in one of the above $LIBRARY_DIRS.)
# USE_PKG_CONFIG := 1

# N.B. both build and distribute dirs are cleared on `make clean`
BUILD_DIR := build
DISTRIBUTE_DIR := distribute

# Uncomment for debugging. Does not work on OSX due to https://github.com/BVLC/caffe/issues/171
# DEBUG := 1

# The ID of the GPU that 'make runtest' will use to run unit tests.
TEST_GPUID := 0

# enable pretty build (comment to see full commands)
Q ?= @
LaviLiu commented 6 years ago

Thank you for your instruction ! I will try it again.

LaviLiu commented 6 years ago

Hi @jmrichardson I have a problem,when i install the project. Could you help me? Following your instruction, I install fbthrift. First I install the fbthrift 0.24.0, but some errors occur when i run make.

lavi@amax:~/Downloads/fbthrift/thrift$ make -j16 make all-recursive make[1]: Entering directory /home/lavi/Downloads/fbthrift/thrift' Making all in compiler make[2]: Entering directory/home/lavi/Downloads/fbthrift/thrift/compiler' make all-recursive make[3]: Entering directory /home/lavi/Downloads/fbthrift/thrift/compiler' Making all in . make[4]: Entering directory/home/lavi/Downloads/fbthrift/thrift/compiler' /bin/bash ../build-aux/ylwrap thrifty.yy y.tab.c thrifty.cc y.tab.h echo thrifty.cc | sed -e s/cc$/hh/ -e s/cpp$/hpp/ -e s/cxx$/hxx/ -e s/c++$/h++/ -e s/c$/h/ y.output thrifty.output -- bison -y -d /bin/bash ../build-aux/ylwrap thriftl.ll lex.yy.c thriftl.cc -- flex depbase=echo common.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||';\ /bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I../.. -pthread -I/usr/include -I/usr/local/include -std=gnu++0x -MT common.lo -MD -MP -MF $depbase.Tpo -c -o common.lo common.cc &&\ mv -f $depbase.Tpo $depbase.Plo depbase=echo main.o | sed 's|[^/]*$|.deps/&|;s|\.o$||';\ g++ -DHAVE_CONFIG_H -I../.. -pthread -I/usr/include -I/usr/local/include -std=gnu++0x -MT main.o -MD -MP -MF $depbase.Tpo -c -o main.o main.cc &&\ mv -f $depbase.Tpo $depbase.Po depbase=echo parse/t_type.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||';\ /bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I../.. -pthread -I/usr/include -I/usr/local/include -std=gnu++0x -MT parse/t_type.lo -MD -MP -MF $depbase.Tpo -c -o parse/t_type.lo parse/t_type.cc &&\ mv -f $depbase.Tpo $depbase.Plo depbase=echo parse/t_typedef.lo | sed 's|[^/]*$|.deps/&|;s|\.lo$||';\ /bin/bash ../libtool --tag=CXX --mode=compile g++ -DHAVE_CONFIG_H -I../.. -pthread -I/usr/include -I/usr/local/include -std=gnu++0x -MT parse/t_typedef.lo -MD -MP -MF $depbase.Tpo -c -o parse/t_typedef.lo parse/t_typedef.cc &&\ mv -f $depbase.Tpo $depbase.Plo depbase=echo generate/t_generator.o | sed 's|[^/]*$|.deps/&|;s|\.o$||';\ g++ -DHAVE_CONFIG_H -I../.. -pthread -I/usr/include -I/usr/local/include -std=gnu++0x -MT generate/t_generator.o -MD -MP -MF $depbase.Tpo -c -o generate/t_generator.o generate/t_generator.cc &&\ mv -f $depbase.Tpo $depbase.Po depbase=echo generate/t_cpp_generator.o | sed 's|[^/]*$|.deps/&|;s|\.o$||';\ g++ -DHAVE_CONFIG_H -I../.. -pthread -I/usr/include -I/usr/local/include -std=gnu++0x -MT generate/t_cpp_generator.o -MD -MP -MF $depbase.Tpo -c -o generate/t_cpp_generator.o generate/t_cpp_generator.cc &&\ mv -f $depbase.Tpo $depbase.Po depbase=echo generate/t_java_generator.o | sed 's|[^/]*$|.deps/&|;s|\.o$||';\ g++ -DHAVE_CONFIG_H -I../.. -pthread -I/usr/include -I/usr/local/include -std=gnu++0x -MT generate/t_java_generator.o -MD -MP -MF $depbase.Tpo -c -o generate/t_java_generator.o generate/t_java_generator.cc &&\ mv -f $depbase.Tpo $depbase.Po depbase=echo generate/t_csharp_generator.o | sed 's|[^/]*$|.deps/&|;s|\.o$||';\ g++ -DHAVE_CONFIG_H -I../.. -pthread -I/usr/include -I/usr/local/include -std=gnu++0x -MT generate/t_csharp_generator.o -MD -MP -MF $depbase.Tpo -c -o generate/t_csharp_generator.o generate/t_csharp_generator.cc &&\ mv -f $depbase.Tpo $depbase.Po depbase=echo generate/t_py_generator.o | sed 's|[^/]*$|.deps/&|;s|\.o$||';\ g++ -DHAVE_CONFIG_H -I../.. -pthread -I/usr/include -I/usr/local/include -std=gnu++0x -MT generate/t_py_generator.o -MD -MP -MF $depbase.Tpo -c -o generate/t_py_generator.o generate/t_py_generator.cc &&\ mv -f $depbase.Tpo $depbase.Po depbase=echo generate/t_rb_generator.o | sed 's|[^/]*$|.deps/&|;s|\.o$||';\ g++ -DHAVE_CONFIG_H -I../.. -pthread -I/usr/include -I/usr/local/include -std=gnu++0x -MT generate/t_rb_generator.o -MD -MP -MF $depbase.Tpo -c -o generate/t_rb_generator.o generate/t_rb_generator.cc &&\ mv -f $depbase.Tpo $depbase.Po depbase=echo generate/t_perl_generator.o | sed 's|[^/]*$|.deps/&|;s|\.o$||';\ g++ -DHAVE_CONFIG_H -I../.. -pthread -I/usr/include -I/usr/local/include -std=gnu++0x -MT generate/t_perl_generator.o -MD -MP -MF $depbase.Tpo -c -o generate/t_perl_generator.o generate/t_perl_generator.cc &&\ mv -f $depbase.Tpo $depbase.Po depbase=echo generate/t_php_generator.o | sed 's|[^/]*$|.deps/&|;s|\.o$||';\ g++ -DHAVE_CONFIG_H -I../.. -pthread -I/usr/include -I/usr/local/include -std=gnu++0x -MT generate/t_php_generator.o -MD -MP -MF $depbase.Tpo -c -o generate/t_php_generator.o generate/t_php_generator.cc &&\ mv -f $depbase.Tpo $depbase.Po depbase=echo generate/t_erl_generator.o | sed 's|[^/]*$|.deps/&|;s|\.o$||';\ g++ -DHAVE_CONFIG_H -I../.. -pthread -I/usr/include -I/usr/local/include -std=gnu++0x -MT generate/t_erl_generator.o -MD -MP -MF $depbase.Tpo -c -o generate/t_erl_generator.o generate/t_erl_generator.cc &&\ mv -f $depbase.Tpo $depbase.Po depbase=echo generate/t_cocoa_generator.o | sed 's|[^/]*$|.deps/&|;s|\.o$||';\ g++ -DHAVE_CONFIG_H -I../.. -pthread -I/usr/include -I/usr/local/include -std=gnu++0x -MT generate/t_cocoa_generator.o -MD -MP -MF $depbase.Tpo -c -o generate/t_cocoa_generator.o generate/t_cocoa_generator.cc &&\ mv -f $depbase.Tpo $depbase.Po depbase=echo generate/t_st_generator.o | sed 's|[^/]*$|.deps/&|;s|\.o$||';\ g++ -DHAVE_CONFIG_H -I../.. -pthread -I/usr/include -I/usr/local/include -std=gnu++0x -MT generate/t_st_generator.o -MD -MP -MF $depbase.Tpo -c -o generate/t_st_generator.o generate/t_st_generator.cc &&\ mv -f $depbase.Tpo $depbase.Po libtool: compile: g++ -DHAVE_CONFIG_H -I../.. -pthread -I/usr/include -I/usr/local/include -std=gnu++0x -MT common.lo -MD -MP -MF .deps/common.Tpo -c common.cc -fPIC -DPIC -o .libs/common.o libtool: compile: g++ -DHAVE_CONFIG_H -I../.. -pthread -I/usr/include -I/usr/local/include -std=gnu++0x -MT parse/t_type.lo -MD -MP -MF parse/.deps/t_type.Tpo -c parse/t_type.cc -fPIC -DPIC -o parse/.libs/t_type.o libtool: compile: g++ -DHAVE_CONFIG_H -I../.. -pthread -I/usr/include -I/usr/local/include -std=gnu++0x -MT parse/t_typedef.lo -MD -MP -MF parse/.deps/t_typedef.Tpo -c parse/t_typedef.cc -fPIC -DPIC -o parse/.libs/t_typedef.o updating thrifty.hh depbase=echo generate/t_ocaml_generator.o | sed 's|[^/]*$|.deps/&|;s|\.o$||';\ g++ -DHAVE_CONFIG_H -I../.. -pthread -I/usr/include -I/usr/local/include -std=gnu++0x -MT generate/t_ocaml_generator.o -MD -MP -MF $depbase.Tpo -c -o generate/t_ocaml_generator.o generate/t_ocaml_generator.cc &&\ mv -f $depbase.Tpo $depbase.Po generate/t_rb_generator.cc: In member function ‘virtual void t_rb_generator::generate_enum(t_enum*)’: generate/t_rb_generator.cc:315:11: error: operands to ?: have different types ‘bool’ and ‘std::basic_ostream’ first ? first = false : ftypes << ", "; ^ generate/t_rb_generator.cc:326:11: error: operands to ?: have different types ‘bool’ and ‘std::basic_ostream’ first ? first = false: ftypes << ", "; ^ libtool: compile: g++ -DHAVE_CONFIG_H -I../.. -pthread -I/usr/include -I/usr/local/include -std=gnu++0x -MT parse/t_typedef.lo -MD -MP -MF parse/.deps/t_typedef.Tpo -c parse/t_typedef.cc -o parse/t_typedef.o >/dev/null 2>&1 make[4]: [generate/t_rb_generator.o] Error 1 make[4]: Waiting for unfinished jobs.... libtool: compile: g++ -DHAVE_CONFIG_H -I../.. -pthread -I/usr/include -I/usr/local/include -std=gnu++0x -MT common.lo -MD -MP -MF .deps/common.Tpo -c common.cc -o common.o >/dev/null 2>&1 libtool: compile: g++ -DHAVE_CONFIG_H -I../.. -pthread -I/usr/include -I/usr/local/include -std=gnu++0x -MT parse/t_type.lo -MD -MP -MF parse/.deps/t_type.Tpo -c parse/t_type.cc -o parse/t_type.o >/dev/null 2>&1 make[4]: Leaving directory /home/lavi/Downloads/fbthrift/thrift/compiler' make[3]: *** [all-recursive] Error 1 make[3]: Leaving directory/home/lavi/Downloads/fbthrift/thrift/compiler' make[2]: [all] Error 2 make[2]: Leaving directory `/home/lavi/Downloads/fbthrift/thrift/compiler' make[1]: [all-recursive] Error 1 make[1]: Leaving directory `/home/lavi/Downloads/fbthrift/thrift' make: *** [all] Error 2

Someone tell me to install fbthrift 0.31.0. So i git fbthrift 0.31.0But it have some error when i run ./configure

lavi@amax:~/Downloads/fbthrift/thrift$ ./configure checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes checking for a thread-safe mkdir -p... /bin/mkdir -p checking for gawk... no checking for mawk... mawk checking whether make sets $(MAKE)... yes checking whether make supports nested variables... yes checking whether UID '1017' is supported by ustar format... yes checking whether GID '1017' is supported by ustar format... yes checking how to create a ustar tar archive... gnutar checking for pkg-config... /usr/bin/pkg-config checking pkg-config is at least version 0.9.0... yes checking for gcc... gcc checking whether the C compiler works... yes checking for C compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether gcc accepts -g... yes checking for gcc option to accept ISO C89... none needed checking whether gcc understands -c and -o together... yes checking for style of include used by make... GNU checking dependency style of gcc... gcc3 checking how to run the C preprocessor... gcc -E checking for g++... g++ checking whether we are using the GNU C++ compiler... yes checking whether g++ accepts -g... yes checking dependency style of g++... gcc3 checking if g++ supports C++0x features without additional flags... no checking if g++ supports C++0x features with -std=c++0x... yes checking if g++ supports C++0x features with -std=gnu++0x... yes checking build system type... x86_64-unknown-linux-gnu checking host system type... x86_64-unknown-linux-gnu checking how to print strings... printf checking for a sed that does not truncate output... /bin/sed checking for grep that handles long lines and -e... /bin/grep checking for egrep... /bin/grep -E checking for fgrep... /bin/grep -F checking for ld used by gcc... /usr/bin/ld checking if the linker (/usr/bin/ld) is GNU ld... yes checking for BSD- or MS-compatible name lister (nm)... /usr/bin/nm -B checking the name lister (/usr/bin/nm -B) interface... BSD nm checking whether ln -s works... yes checking the maximum length of command line arguments... 1572864 checking how to convert x86_64-unknown-linux-gnu file names to x86_64-unknown-linux-gnu format... func_convert_file_noop checking how to convert x86_64-unknown-linux-gnu file names to toolchain format... func_convert_file_noop checking for /usr/bin/ld option to reload object files... -r checking for objdump... objdump checking how to recognize dependent libraries... pass_all checking for dlltool... no checking how to associate runtime and link libraries... printf %s\n checking for ar... ar checking for archiver @FILE support... @ checking for strip... strip checking for ranlib... ranlib checking command to parse /usr/bin/nm -B output from gcc object... ok checking for sysroot... no checking for a working dd... /bin/dd checking how to truncate binary pipes... /bin/dd bs=4096 count=1 checking for mt... mt checking if mt is a manifest tool... no checking for ANSI C header files... yes checking for sys/types.h... yes checking for sys/stat.h... yes checking for stdlib.h... yes checking for string.h... yes checking for memory.h... yes checking for strings.h... yes checking for inttypes.h... yes checking for stdint.h... yes checking for unistd.h... yes checking for dlfcn.h... yes checking for objdir... .libs checking if gcc supports -fno-rtti -fno-exceptions... no checking for gcc option to produce PIC... -fPIC -DPIC checking if gcc PIC flag -fPIC -DPIC works... yes checking if gcc static flag -static works... yes checking if gcc supports -c -o file.o... yes checking if gcc supports -c -o file.o... (cached) yes checking whether the gcc linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking whether -lc should be explicitly linked in... no checking dynamic linker characteristics... GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether stripping libraries is possible... yes checking if libtool supports shared libraries... yes checking whether to build shared libraries... yes checking whether to build static libraries... yes checking how to run the C++ preprocessor... g++ -E checking for ld used by g++... /usr/bin/ld -m elf_x86_64 checking if the linker (/usr/bin/ld -m elf_x86_64) is GNU ld... yes checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking for g++ option to produce PIC... -fPIC -DPIC checking if g++ PIC flag -fPIC -DPIC works... yes checking if g++ static flag -static works... yes checking if g++ supports -c -o file.o... yes checking if g++ supports -c -o file.o... (cached) yes checking whether the g++ linker (/usr/bin/ld -m elf_x86_64) supports shared libraries... yes checking dynamic linker characteristics... (cached) GNU/Linux ld.so checking how to hardcode library paths into programs... immediate checking whether make sets $(MAKE)... (cached) yes checking for bison... bison -y checking for flex... flex checking lex output file root... lex.yy checking lex library... -lfl checking whether yytext is a pointer... yes checking whether ln -s works... yes checking for gawk... (cached) mawk checking for openlog in -lglog... yes checking for getenv in -lgflags... yes checking for main in -lsnappy... yes checking for numa_available in -lnuma... yes checking for getenv in -lwangle... no configure: error: Please install the wangle library from https://github.com/facebook/wangle

According the error infomation, I install wangle. But some errors occur again.

lavi@amax:~/Downloads/wangle/wangle$ make [ 1%] Building CXX object CMakeFiles/wangle.dir/acceptor/Acceptor.cpp.o In file included from /usr/local/include/folly/container/Array.h:24:0, from /usr/local/include/folly/io/async/SSLOptions.h:19, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextConfig.h:20, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/ServerSocketConfig.h:19, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:18, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/Utility.h:171:22: error: missing binary operator before token "("

if FOLLY_HAS_BUILTIN(__make_integer_seq) || _MSC_FULL_VER >= 190023918

^ In file included from /usr/local/include/folly/ssl/OpenSSLPtrTypes.h:22:0, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLUtil.h:22, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/ServerSocketConfig.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:18, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/portability/OpenSSL.h:210:19: error: missing binary operator before token "("

if __CLANG_PREREQ(3, 0)

^ In file included from /usr/local/include/folly/io/async/SSLOptions.h:19:0, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextConfig.h:20, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/ServerSocketConfig.h:19, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:18, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/container/Array.h:36:12: error: ‘Negation’ in namespace ‘folly’ does not name a template type folly::Negation<is_ref_wrapper<typename std::decay::type>>; ^ /usr/local/include/folly/container/Array.h:45:7: error: ‘Conjunction’ is not a member of ‘folly’ folly::Conjunction<not_ref_wrapper...>::value, ^ /usr/local/include/folly/container/Array.h:45:26: error: ‘not_ref_wrapper’ was not declared in this scope folly::Conjunction<not_ref_wrapper...>::value, ^ /usr/local/include/folly/container/Array.h:45:47: error: expected primary-expression before ‘>’ token folly::Conjunction<not_ref_wrapper...>::value, ^ /usr/local/include/folly/container/Array.h:45:48: error: expected primary-expression before ‘...’ token folly::Conjunction<not_ref_wrapper...>::value, ^ /usr/local/include/folly/container/Array.h:45:48: error: expected ‘,’ before ‘...’ token /usr/local/include/folly/container/Array.h:45:48: error: expected string-literal before ‘...’ token /usr/local/include/folly/container/Array.h:45:48: error: expected ‘)’ before ‘...’ token /usr/local/include/folly/container/Array.h:64:21: error: ‘FOLLY_ATTR_VISIBILITY_HIDDEN’ does not name a type FOLLY_ALWAYS_INLINE FOLLY_ATTR_VISIBILITY_HIDDEN constexpr auto make_array_with( ^ /usr/local/include/folly/container/Array.h: In function ‘constexpr auto folly::make_array_with(const MakeItem&)’: /usr/local/include/folly/container/Array.h:76:10: error: ‘make_array_with’ is not a member of ‘folly::array_detail’ return array_detail::make_array_with(make, make_index_sequence{}); ^ /usr/local/include/folly/container/Array.h:76:10: note: suggested alternative: /usr/local/include/folly/container/Array.h:75:16: note: ‘folly::make_array_with’ constexpr auto make_array_with(MakeItem const& make) { ^ In file included from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextConfig.h:20:0, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/ServerSocketConfig.h:19, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:18, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/io/async/SSLOptions.h: In function ‘void folly::ssl::setCipherSuites(folly::SSLContext&)’: /usr/local/include/folly/io/async/SSLOptions.h:99:9: error: ‘class folly::SSLContext’ has no member named ‘setCipherList’ ctx.setCipherList(TSSLOptions::kCipherList); ^ /usr/local/include/folly/io/async/SSLOptions.h: In function ‘void folly::ssl::setSignatureAlgorithms(folly::SSLContext&)’: /usr/local/include/folly/io/async/SSLOptions.h:113:9: error: ‘class folly::SSLContext’ has no member named ‘setSignatureAlgorithms’ ctx.setSignatureAlgorithms(TSSLOptions::kSignatureAlgorithms); ^ In file included from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/ServerSocketConfig.h:19:0, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:18, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextConfig.h: In static member function ‘static const string& wangle::SSLContextConfig::getDefaultCiphers()’: /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextConfig.h:54:9: error: ‘join’ is not a member of ‘folly’ folly::join(':', folly::ssl::SSLServerOptions::kCipherList); ^ In file included from /usr/local/include/folly/ssl/OpenSSLPtrTypes.h:22:0, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLUtil.h:22, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/ServerSocketConfig.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:18, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/portability/OpenSSL.h: At global scope: /usr/local/include/folly/portability/OpenSSL.h:209:1: error: ‘FOLLY_PUSH_WARNING’ does not name a type FOLLY_PUSH_WARNING ^ /usr/local/include/folly/portability/OpenSSL.h:214:1: error: ‘FOLLY_POP_WARNING’ does not name a type FOLLY_POP_WARNING ^ In file included from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/ServerSocketConfig.h:21:0, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:18, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLUtil.h:192:22: error: ‘X509UniquePtr’ in namespace ‘folly::ssl’ does not name a type static folly::ssl::X509UniquePtr getX509FromCertificate( ^ In file included from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/PeekingAcceptorHandshakeHelper.h:19:0, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/SecurityProtocolContextManager.h:18, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:23, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/SocketPeeker.h:98:8: error: ‘bool wangle::SocketPeeker::isBufferMovable()’ marked ‘override’, but does not override bool isBufferMovable() noexcept override { ^ /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/SocketPeeker.h: In member function ‘virtual void wangle::SocketPeeker::readDataAvailable(sizet)’: /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/SocketPeeker.h:89:15: error: ‘class folly::AsyncSocket’ has no member named ‘setPreReceivedData’ socket.setPreReceivedData( ^ In file included from /usr/local/include/folly/io/async/SSLContext.h:32:0, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextConfig.h:19, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/ServerSocketConfig.h:19, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:18, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/PeekingAcceptorHandshakeHelper.h: In member function ‘virtual void wangle::PeekingAcceptorHandshakeHelper::start(folly::AsyncSSLSocket::UniquePtr, wangle::AcceptorHandshakeHelper::Callback)’: /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/PeekingAcceptorHandshakeHelper.h:76:9: error: ‘STATE_UNENCRYPTED’ is not a member of ‘folly::AsyncSSLSocket::SSLStateEnum’ folly::AsyncSSLSocket::SSLStateEnum::STATE_UNENCRYPTED); ^ In file included from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/SecurityProtocolContextManager.h:18:0, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:23, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/PeekingAcceptorHandshakeHelper.h: In member function ‘virtual void wangle::PeekingAcceptorHandshakeHelper::peekError(const folly::AsyncSocketException&)’: /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/PeekingAcceptorHandshakeHelper.h:121:51: error: no matching function for call to ‘folly::exception_wrapper::exceptionwrapper(const folly::AsyncSocketException&)’ socket.get(), folly::exception_wrapper(ex), folly::none); ^ In file included from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/AcceptorHandshakeManager.h:19:0, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/PeekingAcceptorHandshakeHelper.h:18, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/SecurityProtocolContextManager.h:18, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:23, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/ExceptionWrapper.h:147:12: note: candidate: folly::exception_wrapper::exception_wrapper(std::exception_ptr::exception_ptr) explicit exception_wrapper(std::exception_ptr eptr) { ^ /usr/local/include/folly/ExceptionWrapper.h:147:12: note: no known conversion for argument 1 from ‘const folly::AsyncSocketException’ to ‘std::exception_ptr::exception_ptr’ /usr/local/include/folly/ExceptionWrapper.h:143:12: note: candidate: template folly::exception_wrapper::exception_wrapper(std::exception_ptr::exception_ptr, Ex&) explicit exception_wrapper(std::exception_ptr eptr, Ex& exn) { ^ /usr/local/include/folly/ExceptionWrapper.h:143:12: note: template argument deduction/substitution failed: In file included from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/SecurityProtocolContextManager.h:18:0, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:23, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/PeekingAcceptorHandshakeHelper.h:121:51: note: cannot convert ‘ex’ (type ‘const folly::AsyncSocketException’) to type ‘std::exception_ptr::exceptionptr’ socket.get(), folly::exception_wrapper(ex), folly::none); ^ In file included from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/AcceptorHandshakeManager.h:19:0, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/PeekingAcceptorHandshakeHelper.h:18, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/SecurityProtocolContextManager.h:18, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:23, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/ExceptionWrapper.h:116:18: note: candidate: template<class Ex, class> folly::exception_wrapper::exception_wrapper(Ex&&) / implicit / exception_wrapper(Ex&& exn) { ^ /usr/local/include/folly/ExceptionWrapper.h:116:18: note: template argument deduction/substitution failed: /usr/local/include/folly/ExceptionWrapper.h:114:26: error: no type named ‘type’ in ‘struct std::enable_if<false, void>’ template <typename Ex, typename = ^ /usr/local/include/folly/ExceptionWrapper.h:110:3: note: candidate: folly::exception_wrapper::exception_wrapper() exception_wrapper() = default; ^ /usr/local/include/folly/ExceptionWrapper.h:110:3: note: candidate expects 0 arguments, 1 provided /usr/local/include/folly/ExceptionWrapper.h:104:7: note: candidate: folly::exception_wrapper::exception_wrapper(const folly::exception_wrapper&) class exception_wrapper { ^ /usr/local/include/folly/ExceptionWrapper.h:104:7: note: no known conversion for argument 1 from ‘const folly::AsyncSocketException’ to ‘const folly::exception_wrapper&’ /usr/local/include/folly/ExceptionWrapper.h:104:7: note: candidate: folly::exception_wrapper::exception_wrapper(folly::exception_wrapper&&) /usr/local/include/folly/ExceptionWrapper.h:104:7: note: no known conversion for argument 1 from ‘const folly::AsyncSocketException’ to ‘folly::exception_wrapper&&’ In file included from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16:0: /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h: In member function ‘virtual folly::AsyncSSLSocket::UniquePtr wangle::Acceptor::makeNewAsyncSSLSocket(const std::shared_ptr&, folly::EventBase, int)’: /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:379:68: error: no matching function for call to ‘folly::AsyncSSLSocket::AsyncSSLSocket(const std::shared_ptr&, folly::EventBase&, int&, bool, bool)’ true / defer the security negotiation until sslAccept /)); ^ In file included from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/AcceptorHandshakeManager.h:23:0, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/PeekingAcceptorHandshakeHelper.h:18, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/SecurityProtocolContextManager.h:18, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:23, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/io/async/AsyncSSLSocket.h:233:3: note: candidate: folly::AsyncSSLSocket::AsyncSSLSocket(const std::shared_ptr&, folly::EventBase, int, const string&) AsyncSSLSocket(const std::shared_ptr& ctx, ^ /usr/local/include/folly/io/async/AsyncSSLSocket.h:233:3: note: candidate expects 4 arguments, 5 provided /usr/local/include/folly/io/async/AsyncSSLSocket.h:214:3: note: candidate: folly::AsyncSSLSocket::AsyncSSLSocket(const std::shared_ptr&, folly::EventBase, const string&) AsyncSSLSocket(const std::shared_ptr &ctx, ^ /usr/local/include/folly/io/async/AsyncSSLSocket.h:214:3: note: candidate expects 3 arguments, 5 provided /usr/local/include/folly/io/async/AsyncSSLSocket.h:182:3: note: candidate: folly::AsyncSSLSocket::AsyncSSLSocket(const std::shared_ptr&, folly::EventBase, int, bool) AsyncSSLSocket(const std::shared_ptr& ctx, ^ /usr/local/include/folly/io/async/AsyncSSLSocket.h:182:3: note: candidate expects 4 arguments, 5 provided /usr/local/include/folly/io/async/AsyncSSLSocket.h:164:3: note: candidate: folly::AsyncSSLSocket::AsyncSSLSocket(const std::shared_ptr&, folly::EventBase) AsyncSSLSocket(const std::shared_ptr &ctx, ^ /usr/local/include/folly/io/async/AsyncSSLSocket.h:164:3: note: candidate expects 2 arguments, 5 provided In file included from /usr/local/include/folly/concurrency/CacheLocality.h:31:0, from /usr/local/include/folly/SharedMutex.h:28, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextManager.h:20, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:19: /usr/local/include/folly/Indestructible.h: At global scope: /usr/local/include/folly/Indestructible.h:84:7: error: ‘_t’ has not been declared _t<std::enable_if<std::is_constructible<T, U&&>::value>> = nullptr, ^ /usr/local/include/folly/Indestructible.h:84:9: error: expected ‘>’ before ‘<’ token _t<std::enable_if<std::is_constructible<T, U&&>::value>> = nullptr, ^ /usr/local/include/folly/Indestructible.h:94:7: error: ‘_t’ has not been declared _t<std::enable_if<std::is_constructible<T, U&&>::value>> = nullptr, ^ /usr/local/include/folly/Indestructible.h:94:9: error: expected ‘>’ before ‘<’ token _t<std::enable_if<std::is_constructible<T, U&&>::value>> = nullptr, ^ /usr/local/include/folly/Indestructible.h:99:28: error: ‘template template<class U, int > constexpr folly::Indestructible::Indestructible(U&&)’ cannot be overloaded / implicit */ constexpr Indestructible(U&& u) noexcept( ^ /usr/local/include/folly/Indestructible.h:89:22: error: with ‘template template<class U, int > constexpr folly::Indestructible::Indestructible(U&&)’ explicit constexpr Indestructible(U&& u) noexcept( ^ In file included from /usr/local/include/folly/functional/ApplyTuple.h:35:0, from /usr/local/include/folly/hash/Hash.h:27, from /usr/local/include/folly/concurrency/CacheLocality.h:35, from /usr/local/include/folly/SharedMutex.h:28, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextManager.h:20, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:19: /usr/local/include/folly/functional/Invoke.h:100:22: error: ‘void_t’ was not declared in this scope struct invoke_result<void_t<invokeresult<F, Args...>>, F, Args...> { ^ /usr/local/include/folly/functional/Invoke.h:100:54: error: wrong number of template arguments (1, should be at least 2) struct invoke_result<void_t<invokeresult<F, Args...>>, F, Args...> { ^ /usr/local/include/folly/functional/Invoke.h:97:8: note: provided for ‘template<class Void, class F, class ... Args> struct folly::invoke_detail::invoke_result’ struct invoke_result {}; ^ /usr/local/include/folly/functional/Invoke.h:108:21: error: ‘void_t’ was not declared in this scope struct is_invocable<void_t<invokeresult<F, Args...>>, F, Args...> ^ /usr/local/include/folly/functional/Invoke.h:108:53: error: wrong number of template arguments (1, should be at least 2) struct is_invocable<void_t<invokeresult<F, Args...>>, F, Args...> ^ /usr/local/include/folly/functional/Invoke.h:105:8: note: provided for ‘template<class Void, class F, class ... Args> struct folly::invoke_detail::is_invocable’ struct is_invocable : std::false_type {}; ^ /usr/local/include/folly/functional/Invoke.h:115:23: error: ‘void_t’ was not declared in this scope struct is_invocable_r<void_t<invokeresult<F, Args...>>, R, F, Args...> ^ /usr/local/include/folly/functional/Invoke.h:115:55: error: wrong number of template arguments (1, should be at least 3) struct is_invocable_r<void_t<invokeresult<F, Args...>>, R, F, Args...> ^ /usr/local/include/folly/functional/Invoke.h:112:8: note: provided for ‘template<class Void, class R, class F, class ... Args> struct folly::invoke_detail::is_invocable_r’ struct is_invocable_r : std::false_type {}; ^ /usr/local/include/folly/functional/Invoke.h:122:29: error: ‘void_t’ was not declared in this scope struct is_nothrow_invocable<void_t<invokeresult<F, Args...>>, F, Args...> ^ /usr/local/include/folly/functional/Invoke.h:122:61: error: wrong number of template arguments (1, should be at least 2) struct is_nothrow_invocable<void_t<invokeresult<F, Args...>>, F, Args...> ^ /usr/local/include/folly/functional/Invoke.h:119:8: note: provided for ‘template<class Void, class F, class ... Args> struct folly::invoke_detail::is_nothrow_invocable’ struct is_nothrow_invocable : std::false_type {}; ^ /usr/local/include/folly/functional/Invoke.h:129:31: error: ‘void_t’ was not declared in this scope struct is_nothrow_invocable_r<void_t<invokeresult<F, Args...>>, R, F, Args...> ^ /usr/local/include/folly/functional/Invoke.h:129:63: error: wrong number of template arguments (1, should be at least 3) struct is_nothrow_invocable_r<void_t<invokeresult<F, Args...>>, R, F, Args...> ^ /usr/local/include/folly/functional/Invoke.h:126:8: note: provided for ‘template<class Void, class R, class F, class ... Args> struct folly::invoke_detail::is_nothrow_invocable_r’ struct is_nothrow_invocable_r : std::false_type {}; ^ In file included from /usr/local/include/folly/hash/Hash.h:28:0, from /usr/local/include/folly/concurrency/CacheLocality.h:35, from /usr/local/include/folly/SharedMutex.h:28, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextManager.h:20, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:19: /usr/local/include/folly/hash/SpookyHashV1.h:53:7: error: redefinition of ‘class folly::hash::SpookyHashV1’ class SpookyHashV1 ^ In file included from /usr/local/include/folly/Hash.h:26:0, from /usr/local/include/folly/FBString.h:61, from /usr/local/include/folly/Conv.h:27, from /usr/local/include/folly/String.h:34, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLUtil.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/ServerSocketConfig.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:18, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/SpookyHashV1.h:54:7: error: previous definition of ‘class folly::hash::SpookyHashV1’ class SpookyHashV1 ^ In file included from /usr/local/include/folly/hash/Hash.h:29:0, from /usr/local/include/folly/concurrency/CacheLocality.h:35, from /usr/local/include/folly/SharedMutex.h:28, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextManager.h:20, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:19: /usr/local/include/folly/hash/SpookyHashV2.h:54:7: error: redefinition of ‘class folly::hash::SpookyHashV2’ class SpookyHashV2 ^ In file included from /usr/local/include/folly/Hash.h:27:0, from /usr/local/include/folly/FBString.h:61, from /usr/local/include/folly/Conv.h:27, from /usr/local/include/folly/String.h:34, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLUtil.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/ServerSocketConfig.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:18, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/SpookyHashV2.h:55:7: error: previous definition of ‘class folly::hash::SpookyHashV2’ class SpookyHashV2 ^ In file included from /usr/local/include/folly/lang/Bits.h:64:0, from /usr/local/include/folly/hash/Hash.h:30, from /usr/local/include/folly/concurrency/CacheLocality.h:35, from /usr/local/include/folly/SharedMutex.h:28, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextManager.h:20, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:19: /usr/local/include/folly/lang/Assume.h: In function ‘void folly::assume(bool)’: /usr/local/include/folly/lang/Assume.h:42:7: error: ‘kIsDebug’ was not declared in this scope if (kIsDebug) { ^ In file included from /usr/local/include/folly/hash/Hash.h:30:0, from /usr/local/include/folly/concurrency/CacheLocality.h:35, from /usr/local/include/folly/SharedMutex.h:28, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextManager.h:20, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:19: /usr/local/include/folly/lang/Bits.h: At global scope: /usr/local/include/folly/lang/Bits.h:78:3: error: redefinition of ‘template constexpr typename std::enable_if<((std::is_integral<_Tp>::value && std::is_unsigned<_Tp>::value) && (sizeof (T) <= sizeof (unsigned int))), unsigned int>::type folly::findFirstSet(T)’ findFirstSet(T x) { ^ In file included from /usr/local/include/folly/io/async/AsyncSSLSocket.h:30:0, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/AcceptorHandshakeManager.h:23, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/PeekingAcceptorHandshakeHelper.h:18, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/SecurityProtocolContextManager.h:18, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:23, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/Bits.h:102:3: note: ‘template constexpr typename std::enable_if<((std::is_integral<_Tp>::value && std::is_unsigned<_Tp>::value) && (sizeof (T) <= sizeof (unsigned int))), unsigned int>::type folly::findFirstSet(T)’ previously declared here findFirstSet(T x) { ^ In file included from /usr/local/include/folly/hash/Hash.h:30:0, from /usr/local/include/folly/concurrency/CacheLocality.h:35, from /usr/local/include/folly/SharedMutex.h:28, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextManager.h:20, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:19: /usr/local/include/folly/lang/Bits.h:90:3: error: redefinition of ‘template constexpr typename std::enable_if<(((std::is_integral<_Tp>::value && std::is_unsigned<_Tp>::value) && (sizeof (T) > sizeof (unsigned int))) && (sizeof (T) <= sizeof (long unsigned int))), unsigned int>::type folly::findFirstSet(T)’ findFirstSet(T x) { ^ In file included from /usr/local/include/folly/io/async/AsyncSSLSocket.h:30:0, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/AcceptorHandshakeManager.h:23, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/PeekingAcceptorHandshakeHelper.h:18, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/SecurityProtocolContextManager.h:18, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:23, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/Bits.h:119:3: note: ‘template constexpr typename std::enable_if<(((std::is_integral<_Tp>::value && std::is_unsigned<_Tp>::value) && (sizeof (T) > sizeof (unsigned int))) && (sizeof (T) <= sizeof (long unsigned int))), unsigned int>::type folly::findFirstSet(T)’ previously declared here findFirstSet(T x) { ^ In file included from /usr/local/include/folly/hash/Hash.h:30:0, from /usr/local/include/folly/concurrency/CacheLocality.h:35, from /usr/local/include/folly/SharedMutex.h:28, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextManager.h:20, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:19: /usr/local/include/folly/lang/Bits.h:102:3: error: redefinition of ‘template constexpr typename std::enable_if<(((std::is_integral<_Tp>::value && std::is_unsigned<_Tp>::value) && (sizeof (T) > sizeof (long unsigned int))) && (sizeof (T) <= sizeof (long long unsigned int))), unsigned int>::type folly::findFirstSet(T)’ findFirstSet(T x) { ^ In file included from /usr/local/include/folly/io/async/AsyncSSLSocket.h:30:0, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/AcceptorHandshakeManager.h:23, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/PeekingAcceptorHandshakeHelper.h:18, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/SecurityProtocolContextManager.h:18, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:23, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/Bits.h:136:3: note: ‘template constexpr typename std::enable_if<(((std::is_integral<_Tp>::value && std::is_unsigned<_Tp>::value) && (sizeof (T) > sizeof (long unsigned int))) && (sizeof (T) <= sizeof (long long unsigned int))), unsigned int>::type folly::findFirstSet(T)’ previously declared here findFirstSet(T x) { ^ In file included from /usr/local/include/folly/hash/Hash.h:30:0, from /usr/local/include/folly/concurrency/CacheLocality.h:35, from /usr/local/include/folly/SharedMutex.h:28, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextManager.h:20, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:19: /usr/local/include/folly/lang/Bits.h:111:3: error: redefinition of ‘template constexpr typename std::enable_if<(std::is_integral<_Tp>::value && std::is_signed<_Tp>::value), unsigned int>::type folly::findFirstSet(T)’ findFirstSet(T x) { ^ In file included from /usr/local/include/folly/io/async/AsyncSSLSocket.h:30:0, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/AcceptorHandshakeManager.h:23, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/PeekingAcceptorHandshakeHelper.h:18, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/SecurityProtocolContextManager.h:18, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:23, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/Bits.h:150:3: note: ‘template constexpr typename std::enable_if<(std::is_integral<_Tp>::value && std::is_signed<_Tp>::value), unsigned int>::type folly::findFirstSet(T)’ previously declared here findFirstSet(T x) { ^ In file included from /usr/local/include/folly/hash/Hash.h:30:0, from /usr/local/include/folly/concurrency/CacheLocality.h:35, from /usr/local/include/folly/SharedMutex.h:28, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextManager.h:20, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:19: /usr/local/include/folly/lang/Bits.h:127:3: error: redefinition of ‘template constexpr typename std::enable_if<((std::is_integral<_Tp>::value && std::is_unsigned<_Tp>::value) && (sizeof (T) <= sizeof (unsigned int))), unsigned int>::type folly::findLastSet(T)’ findLastSet(T x) { ^ In file included from /usr/local/include/folly/io/async/AsyncSSLSocket.h:30:0, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/AcceptorHandshakeManager.h:23, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/PeekingAcceptorHandshakeHelper.h:18, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/SecurityProtocolContextManager.h:18, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:23, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/Bits.h:166:3: note: ‘template constexpr typename std::enable_if<((std::is_integral<_Tp>::value && std::is_unsigned<_Tp>::value) && (sizeof (T) <= sizeof (unsigned int))), unsigned int>::type folly::findLastSet(T)’ previously declared here findLastSet(T x) { ^ In file included from /usr/local/include/folly/hash/Hash.h:30:0, from /usr/local/include/folly/concurrency/CacheLocality.h:35, from /usr/local/include/folly/SharedMutex.h:28, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextManager.h:20, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:19: /usr/local/include/folly/lang/Bits.h:141:3: error: redefinition of ‘template constexpr typename std::enable_if<(((std::is_integral<_Tp>::value && std::is_unsigned<_Tp>::value) && (sizeof (T) > sizeof (unsigned int))) && (sizeof (T) <= sizeof (long unsigned int))), unsigned int>::type folly::findLastSet(T)’ findLastSet(T x) { ^ In file included from /usr/local/include/folly/io/async/AsyncSSLSocket.h:30:0, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/AcceptorHandshakeManager.h:23, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/PeekingAcceptorHandshakeHelper.h:18, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/SecurityProtocolContextManager.h:18, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:23, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/Bits.h:189:3: note: ‘template constexpr typename std::enable_if<(((std::is_integral<_Tp>::value && std::is_unsigned<_Tp>::value) && (sizeof (T) > sizeof (unsigned int))) && (sizeof (T) <= sizeof (long unsigned int))), unsigned int>::type folly::findLastSet(T)’ previously declared here findLastSet(T x) { ^ In file included from /usr/local/include/folly/hash/Hash.h:30:0, from /usr/local/include/folly/concurrency/CacheLocality.h:35, from /usr/local/include/folly/SharedMutex.h:28, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextManager.h:20, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:19: /usr/local/include/folly/lang/Bits.h:153:3: error: redefinition of ‘template constexpr typename std::enable_if<(((std::is_integral<_Tp>::value && std::is_unsigned<_Tp>::value) && (sizeof (T) > sizeof (long unsigned int))) && (sizeof (T) <= sizeof (long long unsigned int))), unsigned int>::type folly::findLastSet(T)’ findLastSet(T x) { ^ In file included from /usr/local/include/folly/io/async/AsyncSSLSocket.h:30:0, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/AcceptorHandshakeManager.h:23, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/PeekingAcceptorHandshakeHelper.h:18, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/SecurityProtocolContextManager.h:18, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:23, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/Bits.h:212:3: note: ‘template constexpr typename std::enable_if<(((std::is_integral<_Tp>::value && std::is_unsigned<_Tp>::value) && (sizeof (T) > sizeof (long unsigned int))) && (sizeof (T) <= sizeof (long long unsigned int))), unsigned int>::type folly::findLastSet(T)’ previously declared here findLastSet(T x) { ^ In file included from /usr/local/include/folly/hash/Hash.h:30:0, from /usr/local/include/folly/concurrency/CacheLocality.h:35, from /usr/local/include/folly/SharedMutex.h:28, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextManager.h:20, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:19: /usr/local/include/folly/lang/Bits.h:164:3: error: redefinition of ‘template constexpr typename std::enable_if<(std::is_integral<_Tp>::value && std::is_signed<_Tp>::value), unsigned int>::type folly::findLastSet(T)’ findLastSet(T x) { ^ In file included from /usr/local/include/folly/io/async/AsyncSSLSocket.h:30:0, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/AcceptorHandshakeManager.h:23, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/PeekingAcceptorHandshakeHelper.h:18, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/SecurityProtocolContextManager.h:18, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:23, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/Bits.h:233:3: note: ‘template constexpr typename std::enable_if<(std::is_integral<_Tp>::value && std::is_signed<_Tp>::value), unsigned int>::type folly::findLastSet(T)’ previously declared here findLastSet(T x) { ^ In file included from /usr/local/include/folly/hash/Hash.h:30:0, from /usr/local/include/folly/concurrency/CacheLocality.h:35, from /usr/local/include/folly/SharedMutex.h:28, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextManager.h:20, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:19: /usr/local/include/folly/lang/Bits.h:173:1: error: redefinition of ‘template constexpr typename std::enable_if<(std::is_integral<_Tp>::value && std::is_unsigned<_Tp>::value), T>::type folly::nextPowTwo(T)’ nextPowTwo(T v) { ^ In file included from /usr/local/include/folly/io/async/AsyncSSLSocket.h:30:0, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/AcceptorHandshakeManager.h:23, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/PeekingAcceptorHandshakeHelper.h:18, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/SecurityProtocolContextManager.h:18, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:23, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/Bits.h:242:1: note: ‘template constexpr typename std::enable_if<(std::is_integral<_Tp>::value && std::is_unsigned<_Tp>::value), T>::type folly::nextPowTwo(T)’ previously declared here nextPowTwo(T v) { ^ In file included from /usr/local/include/folly/hash/Hash.h:30:0, from /usr/local/include/folly/concurrency/CacheLocality.h:35, from /usr/local/include/folly/SharedMutex.h:28, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextManager.h:20, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:19: /usr/local/include/folly/lang/Bits.h:188:1: error: redefinition of ‘template constexpr typename std::enable_if<(std::is_integral<_Tp>::value && std::is_unsigned<_Tp>::value), bool>::type folly::isPowTwo(T)’ isPowTwo(T v) { ^ In file included from /usr/local/include/folly/io/async/AsyncSSLSocket.h:30:0, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/AcceptorHandshakeManager.h:23, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/PeekingAcceptorHandshakeHelper.h:18, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/SecurityProtocolContextManager.h:18, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:23, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/Bits.h:251:1: note: ‘template constexpr typename std::enable_if<(std::is_integral<_Tp>::value && std::is_unsigned<_Tp>::value), bool>::type folly::isPowTwo(T)’ previously declared here isPowTwo(T v) { ^ In file included from /usr/local/include/folly/hash/Hash.h:30:0, from /usr/local/include/folly/concurrency/CacheLocality.h:35, from /usr/local/include/folly/SharedMutex.h:28, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextManager.h:20, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:19: /usr/local/include/folly/lang/Bits.h:201:3: error: redefinition of ‘template typename std::enable_if<((std::is_integral<_Tp>::value && std::is_unsigned<_Tp>::value) && (sizeof (T) <= sizeof (unsigned int))), long unsigned int>::type folly::popcount(T)’ popcount(T x) { ^ In file included from /usr/local/include/folly/io/async/AsyncSSLSocket.h:30:0, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/AcceptorHandshakeManager.h:23, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/PeekingAcceptorHandshakeHelper.h:18, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/SecurityProtocolContextManager.h:18, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:23, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/Bits.h:264:3: note: ‘template typename std::enable_if<((std::is_integral<_Tp>::value && std::is_unsigned<_Tp>::value) && (sizeof (T) <= sizeof (unsigned int))), long unsigned int>::type folly::popcount(T)’ previously declared here popcount(T x) { ^ In file included from /usr/local/include/folly/hash/Hash.h:30:0, from /usr/local/include/folly/concurrency/CacheLocality.h:35, from /usr/local/include/folly/SharedMutex.h:28, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextManager.h:20, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:19: /usr/local/include/folly/lang/Bits.h:212:3: error: redefinition of ‘template typename std::enable_if<(((std::is_integral<_Tp>::value && std::is_unsigned<_Tp>::value) && (sizeof (T) > sizeof (unsigned int))) && (sizeof (T) <= sizeof (long long unsigned int))), long unsigned int>::type folly::popcount(T)’ popcount(T x) { ^ In file included from /usr/local/include/folly/io/async/AsyncSSLSocket.h:30:0, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/AcceptorHandshakeManager.h:23, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/PeekingAcceptorHandshakeHelper.h:18, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/SecurityProtocolContextManager.h:18, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:23, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/Bits.h:275:3: note: ‘template typename std::enable_if<(((std::is_integral<_Tp>::value && std::is_unsigned<_Tp>::value) && (sizeof (T) > sizeof (unsigned int))) && (sizeof (T) <= sizeof (long long unsigned int))), long unsigned int>::type folly::popcount(T)’ previously declared here popcount(T x) { ^ In file included from /usr/local/include/folly/hash/Hash.h:30:0, from /usr/local/include/folly/concurrency/CacheLocality.h:35, from /usr/local/include/folly/SharedMutex.h:28, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextManager.h:20, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:19: /usr/local/include/folly/lang/Bits.h:247:8: error: redefinition of ‘struct folly::detail::EndianInt’ struct EndianInt { ^ In file included from /usr/local/include/folly/io/async/AsyncSSLSocket.h:30:0, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/AcceptorHandshakeManager.h:23, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/PeekingAcceptorHandshakeHelper.h:18, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/SecurityProtocolContextManager.h:18, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:23, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/Bits.h:340:8: error: previous definition of ‘struct folly::detail::EndianInt’ struct EndianInt : public detail::EndianIntBase { ^ In file included from /usr/local/include/folly/hash/Hash.h:30:0, from /usr/local/include/folly/concurrency/CacheLocality.h:35, from /usr/local/include/folly/SharedMutex.h:28, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextManager.h:20, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:19: /usr/local/include/folly/lang/Bits.h:291:7: error: redefinition of ‘class folly::Endian’ class Endian { ^ In file included from /usr/local/include/folly/io/async/AsyncSSLSocket.h:30:0, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/AcceptorHandshakeManager.h:23, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/PeekingAcceptorHandshakeHelper.h:18, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/SecurityProtocolContextManager.h:18, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:23, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/Bits.h:379:7: error: previous definition of ‘class folly::Endian’ class Endian { ^ In file included from /usr/local/include/folly/hash/Hash.h:30:0, from /usr/local/include/folly/concurrency/CacheLocality.h:35, from /usr/local/include/folly/SharedMutex.h:28, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextManager.h:20, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:19: /usr/local/include/folly/lang/Bits.h:323:46: error: redefinition of default argument for ‘class Enable’ template <class T, class Enable=void> struct Unaligned; ^ In file included from /usr/local/include/folly/io/async/AsyncSSLSocket.h:30:0, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/AcceptorHandshakeManager.h:23, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/PeekingAcceptorHandshakeHelper.h:18, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/SecurityProtocolContextManager.h:18, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:23, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/Bits.h:585:20: note: original definition appeared here template <class T, class Enable=void> struct Unaligned; ^ In file included from /usr/local/include/folly/hash/Hash.h:30:0, from /usr/local/include/folly/concurrency/CacheLocality.h:35, from /usr/local/include/folly/SharedMutex.h:28, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextManager.h:20, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:19: /usr/local/include/folly/lang/Bits.h:330:8: error: redefinition of ‘struct folly::Unaligned<T, typename std::enable_if<std::is_pod<_Tp>::value>::type>’ struct Unaligned< ^ In file included from /usr/local/include/folly/io/async/AsyncSSLSocket.h:30:0, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/AcceptorHandshakeManager.h:23, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/PeekingAcceptorHandshakeHelper.h:18, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/SecurityProtocolContextManager.h:18, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:23, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/Bits.h:592:8: error: previous definition of ‘struct folly::Unaligned<T, typename std::enable_if<std::is_pod<_Tp>::value>::type>’ struct Unaligned< ^ In file included from /usr/local/include/folly/hash/Hash.h:30:0, from /usr/local/include/folly/concurrency/CacheLocality.h:35, from /usr/local/include/folly/SharedMutex.h:28, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextManager.h:20, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:19: /usr/local/include/folly/lang/Bits.h:343:10: error: redefinition of ‘template T folly::loadUnaligned(const void)’ inline T loadUnaligned(const void p) { ^ In file included from /usr/local/include/folly/io/async/AsyncSSLSocket.h:30:0, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/AcceptorHandshakeManager.h:23, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/PeekingAcceptorHandshakeHelper.h:18, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/SecurityProtocolContextManager.h:18, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:23, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/Bits.h:605:10: note: ‘template T folly::loadUnaligned(const void)’ previously declared here inline T loadUnaligned(const void p) { ^ In file included from /usr/local/include/folly/hash/Hash.h:30:0, from /usr/local/include/folly/concurrency/CacheLocality.h:35, from /usr/local/include/folly/SharedMutex.h:28, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextManager.h:20, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:19: /usr/local/include/folly/lang/Bits.h:359:13: error: redefinition of ‘template void folly::storeUnaligned(void, T)’ inline void storeUnaligned(void p, T value) { ^ In file included from /usr/local/include/folly/io/async/AsyncSSLSocket.h:30:0, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/AcceptorHandshakeManager.h:23, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/PeekingAcceptorHandshakeHelper.h:18, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/SecurityProtocolContextManager.h:18, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:23, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/Bits.h:615:13: note: ‘template void folly::storeUnaligned(void, T)’ previously declared here inline void storeUnaligned(void p, T value) { ^ In file included from /usr/local/include/folly/concurrency/CacheLocality.h:35:0, from /usr/local/include/folly/SharedMutex.h:28, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextManager.h:20, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:19: /usr/local/include/folly/hash/Hash.h: In function ‘uint64_t folly::hash::hash_128_to_64(uint64_t, uint64_t)’: /usr/local/include/folly/hash/Hash.h:48:17: error: redefinition of ‘uint64_t folly::hash::hash_128_to_64(uint64_t, uint64_t)’ inline uint64_t hash_128_to_64(const uint64_t upper, const uint64_t lower) { ^ In file included from /usr/local/include/folly/FBString.h:61:0, from /usr/local/include/folly/Conv.h:27, from /usr/local/include/folly/String.h:34, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLUtil.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/ServerSocketConfig.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:18, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/Hash.h:45:17: note: ‘uint64_t folly::hash::hash_128_to_64(uint64_t, uint64_t)’ previously defined here inline uint64_t hash_128_to_64(const uint64_t upper, const uint64_t lower) { ^ In file included from /usr/local/include/folly/concurrency/CacheLocality.h:35:0, from /usr/local/include/folly/SharedMutex.h:28, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextManager.h:20, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:19: /usr/local/include/folly/hash/Hash.h: At global scope: /usr/local/include/folly/hash/Hash.h:61:15: error: redefinition of ‘template size_t folly::hash::hash_combine_generic()’ inline size_t hash_combine_generic() { ^ In file included from /usr/local/include/folly/FBString.h:61:0, from /usr/local/include/folly/Conv.h:27, from /usr/local/include/folly/String.h:34, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLUtil.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/ServerSocketConfig.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:18, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/Hash.h:58:15: note: ‘template size_t folly::hash::hash_combine_generic()’ previously declared here inline size_t hash_combine_generic() { ^ In file included from /usr/local/include/folly/concurrency/CacheLocality.h:35:0, from /usr/local/include/folly/SharedMutex.h:28, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextManager.h:20, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:19: /usr/local/include/folly/hash/Hash.h:69:1: error: redefinition of ‘template<class Iter, class Hash> uint64_t folly::hash::hash_range(Iter, Iter, uint64_t, Hash)’ hash_range(Iter begin, Iter end, uint64_t hash = 0, Hash hasher = Hash()) { ^ In file included from /usr/local/include/folly/FBString.h:61:0, from /usr/local/include/folly/Conv.h:27, from /usr/local/include/folly/String.h:34, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLUtil.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/ServerSocketConfig.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:18, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/Hash.h:65:10: note: ‘template<class Iter, class Hash> uint64_t folly::hash::hash_range(Iter, Iter, uint64_t, Hash)’ previously declared here uint64_t hash_range(Iter begin, ^ In file included from /usr/local/include/folly/concurrency/CacheLocality.h:35:0, from /usr/local/include/folly/SharedMutex.h:28, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextManager.h:20, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:19: /usr/local/include/folly/hash/Hash.h:79:8: error: redefinition of ‘template<class Hasher, class T, class ... Ts> size_t folly::hash::hash_combine_generic(const T&, const Ts& ...)’ size_t hash_combine_generic(const T& t, const Ts&... ts) { ^ In file included from /usr/local/include/folly/FBString.h:61:0, from /usr/local/include/folly/Conv.h:27, from /usr/local/include/folly/String.h:34, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLUtil.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/ServerSocketConfig.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:18, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/Hash.h:76:8: note: ‘template<class Hasher, class T, class ... Ts> size_t folly::hash::hash_combine_generic(const T&, const Ts& ...)’ previously declared here size_t hash_combine_generic(const T& t, const Ts&... ts) { ^ In file included from /usr/local/include/folly/concurrency/CacheLocality.h:35:0, from /usr/local/include/folly/SharedMutex.h:28, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextManager.h:20, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:19: /usr/local/include/folly/hash/Hash.h:96:7: error: redefinition of ‘class folly::hash::StdHasher’ class StdHasher { ^ In file included from /usr/local/include/folly/FBString.h:61:0, from /usr/local/include/folly/Conv.h:27, from /usr/local/include/folly/String.h:34, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLUtil.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/ServerSocketConfig.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:18, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/Hash.h:89:7: error: previous definition of ‘class folly::hash::StdHasher’ class StdHasher { ^ In file included from /usr/local/include/folly/concurrency/CacheLocality.h:35:0, from /usr/local/include/folly/SharedMutex.h:28, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextManager.h:20, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:19: /usr/local/include/folly/hash/Hash.h:105:8: error: redefinition of ‘template<class T, class ... Ts> size_t folly::hash::hash_combine(const T&, const Ts& ...)’ size_t hash_combine(const T& t, const Ts&... ts) { ^ In file included from /usr/local/include/folly/FBString.h:61:0, from /usr/local/include/folly/Conv.h:27, from /usr/local/include/folly/String.h:34, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLUtil.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/ServerSocketConfig.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:18, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/Hash.h:98:8: note: ‘template<class T, class ... Ts> size_t folly::hash::hash_combine(const T&, const Ts& ...)’ previously declared here size_t hash_combine(const T& t, const Ts&... ts) { ^ In file included from /usr/local/include/folly/concurrency/CacheLocality.h:35:0, from /usr/local/include/folly/SharedMutex.h:28, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextManager.h:20, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:19: /usr/local/include/folly/hash/Hash.h: In function ‘uint64_t folly::hash::twang_mix64(uint64_t)’: /usr/local/include/folly/hash/Hash.h:115:17: error: redefinition of ‘uint64_t folly::hash::twang_mix64(uint64_t)’ inline uint64_t twang_mix64(uint64_t key) { ^ In file included from /usr/local/include/folly/FBString.h:61:0, from /usr/local/include/folly/Conv.h:27, from /usr/local/include/folly/String.h:34, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLUtil.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/ServerSocketConfig.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:18, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/Hash.h:108:17: note: ‘uint64_t folly::hash::twang_mix64(uint64_t)’ previously defined here inline uint64_t twang_mix64(uint64_t key) { ^ In file included from /usr/local/include/folly/concurrency/CacheLocality.h:35:0, from /usr/local/include/folly/SharedMutex.h:28, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextManager.h:20, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:19: /usr/local/include/folly/hash/Hash.h: In function ‘uint64_t folly::hash::twang_unmix64(uint64_t)’: /usr/local/include/folly/hash/Hash.h:132:17: error: redefinition of ‘uint64_t folly::hash::twang_unmix64(uint64_t)’ inline uint64_t twang_unmix64(uint64_t key) { ^ In file included from /usr/local/include/folly/FBString.h:61:0, from /usr/local/include/folly/Conv.h:27, from /usr/local/include/folly/String.h:34, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLUtil.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/ServerSocketConfig.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:18, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/Hash.h:125:17: note: ‘uint64_t folly::hash::twang_unmix64(uint64_t)’ previously defined here inline uint64_t twang_unmix64(uint64_t key) { ^ In file included from /usr/local/include/folly/concurrency/CacheLocality.h:35:0, from /usr/local/include/folly/SharedMutex.h:28, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextManager.h:20, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:19: /usr/local/include/folly/hash/Hash.h: In function ‘uint32_t folly::hash::twang_32from64(uint64_t)’: /usr/local/include/folly/hash/Hash.h:149:17: error: redefinition of ‘uint32_t folly::hash::twang_32from64(uint64_t)’ inline uint32_t twang_32from64(uint64_t key) { ^ In file included from /usr/local/include/folly/FBString.h:61:0, from /usr/local/include/folly/Conv.h:27, from /usr/local/include/folly/String.h:34, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLUtil.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/ServerSocketConfig.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:18, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/Hash.h:142:17: note: ‘uint32_t folly::hash::twang_32from64(uint64_t)’ previously defined here inline uint32_t twang_32from64(uint64_t key) { ^ In file included from /usr/local/include/folly/concurrency/CacheLocality.h:35:0, from /usr/local/include/folly/SharedMutex.h:28, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextManager.h:20, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:19: /usr/local/include/folly/hash/Hash.h: In function ‘uint32_t folly::hash::jenkins_rev_mix32(uint32_t)’: /usr/local/include/folly/hash/Hash.h:163:17: error: redefinition of ‘uint32_t folly::hash::jenkins_rev_mix32(uint32_t)’ inline uint32_t jenkins_rev_mix32(uint32_t key) { ^ In file included from /usr/local/include/folly/FBString.h:61:0, from /usr/local/include/folly/Conv.h:27, from /usr/local/include/folly/String.h:34, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLUtil.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/ServerSocketConfig.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:18, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/Hash.h:156:17: note: ‘uint32_t folly::hash::jenkins_rev_mix32(uint32_t)’ previously defined here inline uint32_t jenkins_rev_mix32(uint32_t key) { ^ In file included from /usr/local/include/folly/concurrency/CacheLocality.h:35:0, from /usr/local/include/folly/SharedMutex.h:28, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextManager.h:20, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:19: /usr/local/include/folly/hash/Hash.h: In function ‘uint32_t folly::hash::jenkins_rev_unmix32(uint32_t)’: /usr/local/include/folly/hash/Hash.h:183:17: error: redefinition of ‘uint32_t folly::hash::jenkins_rev_unmix32(uint32_t)’ inline uint32_t jenkins_rev_unmix32(uint32_t key) { ^ In file included from /usr/local/include/folly/FBString.h:61:0, from /usr/local/include/folly/Conv.h:27, from /usr/local/include/folly/String.h:34, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLUtil.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/ServerSocketConfig.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:18, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/Hash.h:176:17: note: ‘uint32_t folly::hash::jenkins_rev_unmix32(uint32_t)’ previously defined here inline uint32_t jenkins_rev_unmix32(uint32_t key) { ^ In file included from /usr/local/include/folly/concurrency/CacheLocality.h:35:0, from /usr/local/include/folly/SharedMutex.h:28, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextManager.h:20, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:19: /usr/local/include/folly/hash/Hash.h: At global scope: /usr/local/include/folly/hash/Hash.h:211:16: error: redefinition of ‘const uint32_t folly::hash::FNV_32_HASH_START’ const uint32_t FNV_32_HASH_START = 2166136261UL; ^ In file included from /usr/local/include/folly/FBString.h:61:0, from /usr/local/include/folly/Conv.h:27, from /usr/local/include/folly/String.h:34, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLUtil.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/ServerSocketConfig.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:18, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/Hash.h:206:16: note: ‘const uint32_t folly::hash::FNV_32_HASH_START’ previously defined here const uint32_t FNV_32_HASH_START = 2166136261UL; ^ In file included from /usr/local/include/folly/concurrency/CacheLocality.h:35:0, from /usr/local/include/folly/SharedMutex.h:28, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextManager.h:20, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:19: /usr/local/include/folly/hash/Hash.h:212:16: error: redefinition of ‘const uint64_t folly::hash::FNV_64_HASH_START’ const uint64_t FNV_64_HASH_START = 14695981039346656037ULL; ^ In file included from /usr/local/include/folly/FBString.h:61:0, from /usr/local/include/folly/Conv.h:27, from /usr/local/include/folly/String.h:34, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLUtil.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/ServerSocketConfig.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:18, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/Hash.h:207:16: note: ‘const uint64_t folly::hash::FNV_64_HASH_START’ previously defined here const uint64_t FNV_64_HASH_START = 14695981039346656037ULL; ^ In file included from /usr/local/include/folly/concurrency/CacheLocality.h:35:0, from /usr/local/include/folly/SharedMutex.h:28, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextManager.h:20, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:19: /usr/local/include/folly/hash/Hash.h: In function ‘uint32_t folly::hash::fnv32(const char, uint32_t)’: /usr/local/include/folly/hash/Hash.h:215:17: error: redefinition of ‘uint32_t folly::hash::fnv32(const char, uint32_t)’ inline uint32_t fnv32(const char buf, uint32_t hash = FNV_32_HASH_START) { ^ In file included from /usr/local/include/folly/FBString.h:61:0, from /usr/local/include/folly/Conv.h:27, from /usr/local/include/folly/String.h:34, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLUtil.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/ServerSocketConfig.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:18, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/Hash.h:209:17: note: ‘uint32_t folly::hash::fnv32(const char, uint32_t)’ previously defined here inline uint32_t fnv32(const char s, ^ In file included from /usr/local/include/folly/concurrency/CacheLocality.h:35:0, from /usr/local/include/folly/SharedMutex.h:28, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextManager.h:20, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:19: /usr/local/include/folly/hash/Hash.h: In function ‘uint32_t folly::hash::fnv32_buf(const void, size_t, uint32_t)’: /usr/local/include/folly/hash/Hash.h:228:1: error: redefinition of ‘uint32_t folly::hash::fnv32_buf(const void, size_t, uint32_t)’ fnv32_buf(const void buf, size_t n, uint32_t hash = FNV_32_HASH_START) { ^ In file included from /usr/local/include/folly/FBString.h:61:0, from /usr/local/include/folly/Conv.h:27, from /usr/local/include/folly/String.h:34, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLUtil.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/ServerSocketConfig.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:18, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/Hash.h:219:17: note: ‘uint32_t folly::hash::fnv32_buf(const void, size_t, uint32_t)’ previously defined here inline uint32_t fnv32_buf(const void buf, ^ In file included from /usr/local/include/folly/concurrency/CacheLocality.h:35:0, from /usr/local/include/folly/SharedMutex.h:28, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextManager.h:20, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:19: /usr/local/include/folly/hash/Hash.h: In function ‘uint32_t folly::hash::fnv32(const string&, uint32_t)’: /usr/local/include/folly/hash/Hash.h:241:17: error: redefinition of ‘uint32_t folly::hash::fnv32(const string&, uint32_t)’ inline uint32_t fnv32( ^ In file included from /usr/local/include/folly/FBString.h:61:0, from /usr/local/include/folly/Conv.h:27, from /usr/local/include/folly/String.h:34, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLUtil.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/ServerSocketConfig.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:18, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/Hash.h:233:17: note: ‘uint32_t folly::hash::fnv32(const string&, uint32_t)’ previously defined here inline uint32_t fnv32(const std::string& str, ^ In file included from /usr/local/include/folly/concurrency/CacheLocality.h:35:0, from /usr/local/include/folly/SharedMutex.h:28, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextManager.h:20, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:19: /usr/local/include/folly/hash/Hash.h: In function ‘uint64_t folly::hash::fnv64(const char, uint64_t)’: /usr/local/include/folly/hash/Hash.h:247:17: error: redefinition of ‘uint64_t folly::hash::fnv64(const char, uint64_t)’ inline uint64_t fnv64(const char buf, uint64_t hash = FNV_64_HASH_START) { ^ In file included from /usr/local/include/folly/FBString.h:61:0, from /usr/local/include/folly/Conv.h:27, from /usr/local/include/folly/String.h:34, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLUtil.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/ServerSocketConfig.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:18, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/Hash.h:238:17: note: ‘uint64_t folly::hash::fnv64(const char, uint64_t)’ previously defined here inline uint64_t fnv64(const char s, ^ In file included from /usr/local/include/folly/concurrency/CacheLocality.h:35:0, from /usr/local/include/folly/SharedMutex.h:28, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextManager.h:20, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:19: /usr/local/include/folly/hash/Hash.h: In function ‘uint64_t folly::hash::fnv64_buf(const void, size_t, uint64_t)’: /usr/local/include/folly/hash/Hash.h:260:1: error: redefinition of ‘uint64_t folly::hash::fnv64_buf(const void, size_t, uint64_t)’ fnv64_buf(const void buf, size_t n, uint64_t hash = FNV_64_HASH_START) { ^ In file included from /usr/local/include/folly/FBString.h:61:0, from /usr/local/include/folly/Conv.h:27, from /usr/local/include/folly/String.h:34, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLUtil.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/ServerSocketConfig.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:18, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/Hash.h:248:17: note: ‘uint64_t folly::hash::fnv64_buf(const void, size_t, uint64_t)’ previously defined here inline uint64_t fnv64_buf(const void buf, ^ In file included from /usr/local/include/folly/concurrency/CacheLocality.h:35:0, from /usr/local/include/folly/SharedMutex.h:28, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextManager.h:20, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:19: /usr/local/include/folly/hash/Hash.h: In function ‘uint64_t folly::hash::fnv64(const string&, uint64_t)’: /usr/local/include/folly/hash/Hash.h:272:17: error: redefinition of ‘uint64_t folly::hash::fnv64(const string&, uint64_t)’ inline uint64_t fnv64( ^ In file included from /usr/local/include/folly/FBString.h:61:0, from /usr/local/include/folly/Conv.h:27, from /usr/local/include/folly/String.h:34, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLUtil.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/ServerSocketConfig.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:18, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/Hash.h:261:17: note: ‘uint64_t folly::hash::fnv64(const string&, uint64_t)’ previously defined here inline uint64_t fnv64(const std::string& str, ^ In file included from /usr/local/include/folly/concurrency/CacheLocality.h:35:0, from /usr/local/include/folly/SharedMutex.h:28, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextManager.h:20, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:19: /usr/local/include/folly/hash/Hash.h: In function ‘uint32_t folly::hash::hsieh_hash32_buf(const void, size_t)’: /usr/local/include/folly/hash/Hash.h:302:17: error: redefinition of ‘uint32_t folly::hash::hsieh_hash32_buf(const void, size_t)’ inline uint32_t hsieh_hash32_buf(const void buf, size_t len) { ^ In file included from /usr/local/include/folly/FBString.h:61:0, from /usr/local/include/folly/Conv.h:27, from /usr/local/include/folly/String.h:34, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLUtil.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/ServerSocketConfig.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:18, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/Hash.h:272:17: note: ‘uint32_t folly::hash::hsieh_hash32_buf(const void, size_t)’ previously defined here inline uint32_t hsieh_hash32_buf(const void buf, size_t len) { ^ In file included from /usr/local/include/folly/concurrency/CacheLocality.h:35:0, from /usr/local/include/folly/SharedMutex.h:28, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextManager.h:20, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:19: /usr/local/include/folly/hash/Hash.h: In function ‘uint32_t folly::hash::hsieh_hash32(const char)’: /usr/local/include/folly/hash/Hash.h:357:17: error: redefinition of ‘uint32_t folly::hash::hsieh_hash32(const char)’ inline uint32_t hsieh_hash32(const char s) { ^ In file included from /usr/local/include/folly/FBString.h:61:0, from /usr/local/include/folly/Conv.h:27, from /usr/local/include/folly/String.h:34, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLUtil.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/ServerSocketConfig.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:18, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/Hash.h:326:17: note: ‘uint32_t folly::hash::hsieh_hash32(const char)’ previously defined here inline uint32_t hsieh_hash32(const char s) { ^ In file included from /usr/local/include/folly/concurrency/CacheLocality.h:35:0, from /usr/local/include/folly/SharedMutex.h:28, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextManager.h:20, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:19: /usr/local/include/folly/hash/Hash.h: In function ‘uint32_t folly::hash::hsieh_hash32_str(const string&)’: /usr/local/include/folly/hash/Hash.h:361:17: error: redefinition of ‘uint32_t folly::hash::hsieh_hash32_str(const string&)’ inline uint32_t hsieh_hash32_str(const std::string& str) { ^ In file included from /usr/local/include/folly/FBString.h:61:0, from /usr/local/include/folly/Conv.h:27, from /usr/local/include/folly/String.h:34, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLUtil.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/ServerSocketConfig.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:18, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/Hash.h:330:17: note: ‘uint32_t folly::hash::hsieh_hash32_str(const string&)’ previously defined here inline uint32_t hsieh_hash32_str(const std::string& str) { ^ In file included from /usr/local/include/folly/concurrency/CacheLocality.h:35:0, from /usr/local/include/folly/SharedMutex.h:28, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextManager.h:20, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:19: /usr/local/include/folly/hash/Hash.h: At global scope: /usr/local/include/folly/hash/Hash.h:413:8: error: redeclared with 2 template parameters struct hasher; ^ In file included from /usr/local/include/folly/FBString.h:61:0, from /usr/local/include/folly/Conv.h:27, from /usr/local/include/folly/String.h:34, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLUtil.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/ServerSocketConfig.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:18, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/Hash.h:339:8: note: previous declaration ‘template struct folly::hasher’ used 1 template parameter struct hasher; ^ In file included from /usr/local/include/folly/concurrency/CacheLocality.h:35:0, from /usr/local/include/folly/SharedMutex.h:28, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextManager.h:20, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:19: /usr/local/include/folly/hash/Hash.h:456:39: error: wrong number of template arguments (2, should be 1) struct IsAvalanchingHasher<hasher<T, E>, K> ^ In file included from /usr/local/include/folly/FBString.h:61:0, from /usr/local/include/folly/Conv.h:27, from /usr/local/include/folly/String.h:34, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLUtil.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/ServerSocketConfig.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:18, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/Hash.h:339:8: note: provided for ‘template struct folly::hasher’ struct hasher; ^ In file included from /usr/local/include/folly/concurrency/CacheLocality.h:35:0, from /usr/local/include/folly/SharedMutex.h:28, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextManager.h:20, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:19: /usr/local/include/folly/hash/Hash.h:456:43: error: template argument 1 is invalid struct IsAvalanchingHasher<hasher<T, E>, K> ^ /usr/local/include/folly/hash/Hash.h:483:8: error: redefinition of ‘struct folly::hasher’ struct hasher : detail::integral_hasher {}; ^ In file included from /usr/local/include/folly/FBString.h:61:0, from /usr/local/include/folly/Conv.h:27, from /usr/local/include/folly/String.h:34, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLUtil.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/ServerSocketConfig.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:18, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/Hash.h:359:19: error: previous definition of ‘struct folly::hasher’ template<> struct hasher { ^ In file included from /usr/local/include/folly/concurrency/CacheLocality.h:35:0, from /usr/local/include/folly/SharedMutex.h:28, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextManager.h:20, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:19: /usr/local/include/folly/hash/Hash.h:486:8: error: redefinition of ‘struct folly::hasher’ struct hasher : detail::integral_hasher {}; ^ In file included from /usr/local/include/folly/FBString.h:61:0, from /usr/local/include/folly/Conv.h:27, from /usr/local/include/folly/String.h:34, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLUtil.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/ServerSocketConfig.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:18, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/Hash.h:353:19: error: previous definition of ‘struct folly::hasher’ template<> struct hasher { ^ In file included from /usr/local/include/folly/concurrency/CacheLocality.h:35:0, from /usr/local/include/folly/SharedMutex.h:28, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextManager.h:20, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:19: /usr/local/include/folly/hash/Hash.h:489:8: error: redefinition of ‘struct folly::hasher’ struct hasher : detail::integral_hasher {}; ^ In file included from /usr/local/include/folly/FBString.h:61:0, from /usr/local/include/folly/Conv.h:27, from /usr/local/include/folly/String.h:34, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLUtil.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/ServerSocketConfig.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:18, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/Hash.h:347:19: error: previous definition of ‘struct folly::hasher’ template<> struct hasher { ^ In file included from /usr/local/include/folly/concurrency/CacheLocality.h:35:0, from /usr/local/include/folly/SharedMutex.h:28, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextManager.h:20, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:19: /usr/local/include/folly/hash/Hash.h:492:8: error: redefinition of ‘struct folly::hasher’ struct hasher : detail::integral_hasher {}; ^ In file included from /usr/local/include/folly/FBString.h:61:0, from /usr/local/include/folly/Conv.h:27, from /usr/local/include/folly/String.h:34, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLUtil.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/ServerSocketConfig.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:18, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/Hash.h:341:19: error: previous definition of ‘struct folly::hasher’ template<> struct hasher { ^ In file included from /usr/local/include/folly/concurrency/CacheLocality.h:35:0, from /usr/local/include/folly/SharedMutex.h:28, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextManager.h:20, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:19: /usr/local/include/folly/hash/Hash.h:535:77: error: wrong number of template arguments (2, should be 1) struct hasher<T, typename std::enable_if<std::is_enum::value, void>::type> { ^ In file included from /usr/local/include/folly/FBString.h:61:0, from /usr/local/include/folly/Conv.h:27, from /usr/local/include/folly/String.h:34, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLUtil.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/ServerSocketConfig.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:18, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/Hash.h:339:8: note: provided for ‘template struct folly::hasher’ struct hasher; ^ In file included from /usr/local/include/folly/concurrency/CacheLocality.h:35:0, from /usr/local/include/folly/SharedMutex.h:28, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextManager.h:20, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:19: /usr/local/include/folly/hash/Hash.h:567:8: error: redefinition of ‘struct folly::TupleHasher<index, Ts>’ struct TupleHasher { ^ In file included from /usr/local/include/folly/FBString.h:61:0, from /usr/local/include/folly/Conv.h:27, from /usr/local/include/folly/String.h:34, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLUtil.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/ServerSocketConfig.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:18, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/Hash.h:367:8: error: previous definition of ‘struct folly::TupleHasher<index, Ts>’ struct TupleHasher { ^ In file included from /usr/local/include/folly/concurrency/CacheLocality.h:35:0, from /usr/local/include/folly/SharedMutex.h:28, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextManager.h:20, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:19: /usr/local/include/folly/hash/Hash.h:576:8: error: redefinition of ‘struct folly::TupleHasher<0ul, Ts ...>’ struct TupleHasher<0, Ts...> { ^ In file included from /usr/local/include/folly/FBString.h:61:0, from /usr/local/include/folly/Conv.h:27, from /usr/local/include/folly/String.h:34, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLUtil.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/ServerSocketConfig.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:18, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/Hash.h:377:8: error: previous definition of ‘struct folly::TupleHasher<0ul, Ts ...>’ struct TupleHasher<0, Ts...> { ^ In file included from /usr/local/include/folly/concurrency/CacheLocality.h:35:0, from /usr/local/include/folly/SharedMutex.h:28, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextManager.h:20, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:19: /usr/local/include/folly/hash/Hash.h:600:8: error: redefinition of ‘struct std::hash<std::pair<_T1, _T2> >’ struct hash<std::pair<T1, T2>> { ^ In file included from /usr/local/include/folly/FBString.h:61:0, from /usr/local/include/folly/Conv.h:27, from /usr/local/include/folly/String.h:34, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLUtil.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/ServerSocketConfig.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:18, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/Hash.h:392:10: error: previous definition of ‘struct std::hash<std::pair<_T1, _T2> >’ struct hash<std::pair<T1, T2> > { ^ In file included from /usr/local/include/folly/concurrency/CacheLocality.h:35:0, from /usr/local/include/folly/SharedMutex.h:28, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextManager.h:20, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:19: /usr/local/include/folly/hash/Hash.h:609:8: error: redefinition of ‘struct std::hash<std::tuple<_Elements ...> >’ struct hash<std::tuple> { ^ In file included from /usr/local/include/folly/FBString.h:61:0, from /usr/local/include/folly/Conv.h:27, from /usr/local/include/folly/String.h:34, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLUtil.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/ServerSocketConfig.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:18, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/Hash.h:401:10: error: previous definition of ‘struct std::hash<std::tuple<_Elements ...> >’ struct hash<std::tuple> { ^ In file included from /usr/local/include/folly/concurrency/CacheLocality.h:36:0, from /usr/local/include/folly/SharedMutex.h:28, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextManager.h:20, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:19: /usr/local/include/folly/lang/Align.h:108:5: error: ‘kIsArchArm’ was not declared in this scope kIsArchArm ? 64 : 128; ^ In file included from /usr/local/include/folly/SharedMutex.h:28:0, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextManager.h:20, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:19: /usr/local/include/folly/concurrency/CacheLocality.h: In member function ‘void folly::CoreRawAllocator::Allocator::allocate(size_t)’: /usr/local/include/folly/concurrency/CacheLocality.h:438:72: error: there are no arguments to ‘aligned_malloc’ that depend on a template parameter, so a declaration of ‘aligned_malloc’ must be available [-fpermissive] aligned_malloc(size, hardware_destructive_interference_size); ^ /usr/local/include/folly/concurrency/CacheLocality.h:438:72: note: (if you use ‘-fpermissive’, G++ will accept your code, but allowing the use of an undeclared name is deprecated) /usr/local/include/folly/concurrency/CacheLocality.h: In member function ‘void folly::CoreRawAllocator::Allocator::deallocate(void, size_t)’: /usr/local/include/folly/concurrency/CacheLocality.h:458:25: error: there are no arguments to ‘aligned_free’ that depend on a template parameter, so a declaration of ‘aligned_free’ must be available [-fpermissive] aligned_free(mem); ^ /usr/local/include/folly/concurrency/CacheLocality.h: At global scope: /usr/local/include/folly/concurrency/CacheLocality.h:473:1: error: ‘CxxAllocatorAdaptor’ does not name a type CxxAllocatorAdaptor<T, typename CoreRawAllocator::Allocator> ^ In file included from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextManager.h:28:0, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:19: /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/SSLContextSelectionMisc.h: In member function ‘size_t wangle::SSLContextKeyHash::operator()(const wangle::SSLContextKey&) const’: /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/SSLContextSelectionMisc.h:89:34: error: no matching function for call to ‘toLowerAscii(std::string&)’ folly::toLowerAscii(lowercase); ^ In file included from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLUtil.h:21:0, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/ServerSocketConfig.h:21, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:18, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/String.h:552:6: note: candidate: void folly::toLowerAscii(char, size_t) void toLowerAscii(char str, size_t length); ^ /usr/local/include/folly/String.h:552:6: note: candidate expects 2 arguments, 1 provided /usr/local/include/folly/String.h:554:13: note: candidate: void folly::toLowerAscii(folly::MutableStringPiece) inline void toLowerAscii(MutableStringPiece str) { ^ /usr/local/include/folly/String.h:554:13: note: no known conversion for argument 1 from ‘std::string {aka std::basic_string}’ to ‘folly::MutableStringPiece {aka folly::Range<char>}’ /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp: In member function ‘void wangle::Acceptor::processEstablishedConnection(int, const folly::SocketAddress&, std::chrono::_V2::steady_clock::time_point, wangle::TransportInfo&)’: /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:268:34: error: ‘class folly::AsyncSSLSocket’ has no member named ‘getTFOSucceded’ tinfo.tfoSucceded = sslSock->getTFOSucceded(); ^ /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:279:31: error: ‘class folly::AsyncSocket’ has no member named ‘getTFOSucceded’ tinfo.tfoSucceded = sock->getTFOSucceded(); ^ /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp: In member function ‘void wangle::Acceptor::connectionReady(folly::AsyncTransportWrapper::UniquePtr, const folly::SocketAddress&, const string&, wangle::SecureTransportType, wangle::TransportInfo&)’: /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:310:28: error: ‘class folly::AsyncTransportWrapper’ has no member named ‘getUnderlyingTransport’ auto asyncSocket = sock->getUnderlyingTransport(); ^ /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:310:62: error: expected primary-expression before ‘>’ token auto asyncSocket = sock->getUnderlyingTransport(); ^ /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:310:64: error: expected primary-expression before ‘)’ token auto asyncSocket = sock->getUnderlyingTransport(); ^ In file included from /usr/include/c++/5/list:63:0, from /usr/local/include/folly/io/async/SSLContext.h:20, from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextConfig.h:19, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/ServerSocketConfig.h:19, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:18, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/include/c++/5/bits/stl_list.h: In instantiation of ‘std::_List_node<_Tp>::_List_node(_Args&& ...) [with _Args = {int, const std::list<std::basic_string<char, std::char_traits, std::allocator >, std::allocator<std::basic_string<char, std::char_traits, std::allocator > > >&}; _Tp = folly::SSLContext::NextProtocolsItem]’: /usr/include/c++/5/ext/new_allocator.h:120:4: required from ‘void __gnu_cxx::new_allocator<_Tp>::construct(_Up, _Args&& ...) [with _Up = std::_List_node; _Args = {int, const std::list<std::basic_string<char, std::char_traits, std::allocator >, std::allocator<std::basic_string<char, std::char_traits, std::allocator > > >&}; _Tp = std::_List_node]’ /usr/include/c++/5/bits/stl_list.h:574:8: required from ‘std::list<_Tp, _Alloc>::_Node* std::list<_Tp, _Alloc>::_M_create_node(_Args&& ...) [with _Args = {int, const std::list<std::basic_string<char, std::char_traits, std::allocator >, std::allocator<std::basic_string<char, std::char_traits, std::allocator > > >&}; _Tp = folly::SSLContext::NextProtocolsItem; _Alloc = std::allocator; std::list<_Tp, _Alloc>::_Node = std::_List_node]’ /usr/include/c++/5/bits/stl_list.h:1763:32: required from ‘void std::list<_Tp, _Alloc>::_M_insert(std::list<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {int, const std::list<std::basic_string<char, std::char_traits, std::allocator >, std::allocator<std::basic_string<char, std::char_traits, std::allocator > > >&}; _Tp = folly::SSLContext::NextProtocolsItem; _Alloc = std::allocator; std::list<_Tp, _Alloc>::iterator = std::_List_iterator]’ /usr/include/c++/5/bits/stl_list.h:1099:11: required from ‘void std::list<_Tp, _Alloc>::emplace_back(_Args&& ...) [with _Args = {int, const std::list<std::basic_string<char, std::char_traits, std::allocator >, std::allocator<std::basic_string<char, std::char_traits, std::allocator > > >&}; _Tp = folly::SSLContext::NextProtocolsItem; _Alloc = std::allocator]’ /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextConfig.h:93:50: required from here /usr/include/c++/5/bits/stl_list.h:114:71: error: no matching function for call to ‘folly::SSLContext::NextProtocolsItem::NextProtocolsItem(int, const std::list<std::basic_string >&)’ : detail::_List_node_base(), _M_data(std::forward<_Args>(args)...) ^ In file included from /home/lavi/Downloads/wangle/wangle/../wangle/ssl/SSLContextConfig.h:19:0, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/ServerSocketConfig.h:19, from /home/lavi/Downloads/wangle/wangle/../wangle/acceptor/Acceptor.h:18, from /home/lavi/Downloads/wangle/wangle/acceptor/Acceptor.cpp:16: /usr/local/include/folly/io/async/SSLContext.h:83:10: note: candidate: folly::SSLContext::NextProtocolsItem::NextProtocolsItem() struct NextProtocolsItem { ^ /usr/local/include/folly/io/async/SSLContext.h:83:10: note: candidate expects 0 arguments, 2 provided /usr/local/include/folly/io/async/SSLContext.h:83:10: note: candidate: folly::SSLContext::NextProtocolsItem::NextProtocolsItem(const folly::SSLContext::NextProtocolsItem&) /usr/local/include/folly/io/async/SSLContext.h:83:10: note: candidate expects 1 argument, 2 provided /usr/local/include/folly/io/async/SSLContext.h:83:10: note: candidate: folly::SSLContext::NextProtocolsItem::NextProtocolsItem(folly::SSLContext::NextProtocolsItem&&) /usr/local/include/folly/io/async/SSLContext.h:83:10: note: candidate expects 1 argument, 2 provided make[2]: [CMakeFiles/wangle.dir/acceptor/Acceptor.cpp.o] Error 1 make[1]: [CMakeFiles/wangle.dir/all] Error 2 make: *** [all] Error 2

Could you give me some instruction? Thank you!

lxx1884896 commented 6 years ago

@jmrichardson @MhLiao hello, I use cudnn6, and I have built the environment except this, have you run successfully on cudnn6, can you give me a hand or give me some advice ? THANKS^_^

MhLiao commented 6 years ago

There is a PR #6 for cudnn6, you can try it.

lxx1884896 commented 6 years ago

@MhLiao thank you,I will have a try.

pauladjata commented 5 years ago

Thank you for the awesome project @MhLiao and thank you for the installation guidance @jmrichardson.

I'm running Ubuntu 16.04.4 LTS on Windows 10 - do you think I will have to modify any of your instructions @jmrichardson ?

Keep up the great work.

AyushP123 commented 5 years ago

@pauladjata, did you have to modify any of the instructions??

AyushP123 commented 5 years ago

So I faced an issue while installing torch

nvcc fatal : Unsupported gpu architecture 'compute_75' torch

This is because even though my GPU Titan RTX supports this architecture, CUDA and CUDNN do not. A quick fix is to add

TORCH_CUDA_ARCH_LIST="6.0"

as an environment variable