aarond10 / https_dns_proxy

A lightweight DNS-over-HTTPS proxy.
MIT License
775 stars 114 forks source link

Compiling Failed on CentOS 7 #113

Closed Haru202 closed 3 years ago

Haru202 commented 3 years ago

Hello,

I compile it on CentOS 7, however, it reminds me of the following errors.

$ cmake . -- The C compiler identification is GNU 4.8.5 -- The CXX compiler identification is GNU 4.8.5 -- Check for working C compiler: /bin/cc -- Check for working C compiler: /bin/cc -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Detecting C compile features -- Detecting C compile features - done -- Check for working CXX compiler: /bin/c++ -- Check for working CXX compiler: /bin/c++ -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Detecting CXX compile features -- Detecting CXX compile features - done -- Found Git: /bin/git (found version "1.8.3.1") fatal: unknown date format format:%Y.%m.%d -- Version: -- clang-tidy found: /opt/rh/llvm-toolset-7/root/usr/bin/clang-tidy CMake Error: The following variables are used in this project, but they are set to NOTFOUND. Please set them or make sure they are set and tested correctly in the CMake files: LIBCARES_INCLUDE_DIR used as include directory in directory /home/https_dns_proxy used as include directory in directory /home/https_dns_proxy used as include directory in directory /home/https_dns_proxy used as include directory in directory /home/https_dns_proxy used as include directory in directory /home/https_dns_proxy used as include directory in directory /home/https_dns_proxy used as include directory in directory /home/https_dns_proxy LIBCURL_INCLUDE_DIR used as include directory in directory /home/https_dns_proxy used as include directory in directory /home/https_dns_proxy used as include directory in directory /home/https_dns_proxy used as include directory in directory /home/https_dns_proxy used as include directory in directory /home/https_dns_proxy used as include directory in directory /home/https_dns_proxy used as include directory in directory /home/https_dns_proxy LIBEV_INCLUDE_DIR used as include directory in directory /home/https_dns_proxy used as include directory in directory /home/https_dns_proxy used as include directory in directory /home/https_dns_proxy used as include directory in directory /home/https_dns_proxy used as include directory in directory /home/https_dns_proxy used as include directory in directory /home/https_dns_proxy used as include directory in directory /home/https_dns_proxy

-- Configuring incomplete, errors occurred! See also "/home/https_dns_proxy/CMakeFiles/CMakeOutput.log".

The CMakeOutput.log is also pasted here https://termbin.com/fy38

aarond10 commented 3 years ago

Do you have the prerequisite libraries installed (libares, libcurl, libev)?

Haru202 commented 3 years ago

Yes. I find that the default versions of them are too old on CentOS 7, so I have to add third-party repositories to update them. As a result, cmake process goes successfully currently, but it gets another error message here.

$ make Scanning dependencies of target https_dns_proxy [ 16%] Building C object CMakeFiles/https_dns_proxy.dir/src/logging.c.o [ 33%] Building C object CMakeFiles/https_dns_proxy.dir/src/main.c.o [ 50%] Building C object CMakeFiles/https_dns_proxy.dir/src/options.c.o [ 66%] Building C object CMakeFiles/https_dns_proxy.dir/src/dns_server.c.o [ 83%] Building C object CMakeFiles/https_dns_proxy.dir/src/https_client.c.o /home/https_dns_proxy/src/https_client.c: In function 'https_log_response_content': /home/https_dns_proxy/src/https_client.c:153:3: error: 'for' loop initial declarations are only allowed in C99 mode for (size_t i = 0; i < size; i += width) { ^ /home/https_dns_proxy/src/https_client.c:153:3: note: use option -std=c99 or -std=gnu99 to compile your code /home/https_dns_proxy/src/https_client.c:161:5: error: 'for' loop initial declarations are only allowed in C99 mode for (size_t c = 0; c < width; c++) { ^ /home/https_dns_proxy/src/https_client.c: In function 'get_io_event': /home/https_dns_proxy/src/https_client.c:380:3: error: 'for' loop initial declarations are only allowed in C99 mode for (int i = 0; i < MAX_TOTAL_CONNECTIONS; i++) { ^ /home/https_dns_proxy/src/https_client.c: In function 'https_client_init': /home/https_dns_proxy/src/https_client.c:443:3: error: 'for' loop initial declarations are only allowed in C99 mode for (int i = 0; i < MAX_TOTAL_CONNECTIONS; i++) { ^ make[2]: [CMakeFiles/https_dns_proxy.dir/src/https_client.c.o] Error 1 make[1]: [CMakeFiles/https_dns_proxy.dir/all] Error 2 make: *** [all] Error 2

Haru202 commented 3 years ago

After the CFLAGS -std=gnu99 is added, it eventually works now.

Adding the following line in CMakeLists.txt set(CMAKE_C_FLAGS "-std=gnu99")

then rerun cmake . make sudo make install

By the way, Minor problem here. It can't show version correctly. ./https_dns_proxy -V UNKNOWN It probabaly has something to do with the cmake warning message.

CMake Warning at CMakeLists.txt:37 (message): Could not find git command! Version is set to: UNKNOWN

Even though the git has already been installed.

aarond10 commented 3 years ago

Glad it's working. You'll only get a version if you're compiling source code that you've git pulled from here. Otherwise unknown is normal.