aarond10/https_dns_proxy

Compiling Failed on CentOS 7

Closed this issue · 4 comments

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

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

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

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.

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.