Issues building Nginx using boringssl

Jinze YANG rttwyjz at gmail.com
Tue Feb 20 13:29:21 UTC 2024


Hi,
I have attached this file, please check it out.


-------------------------------------------------------
> Hi,
>
> Your boringssl paths look ok.
>
> What's in objs/autoconf.err ?
>
> > On 20 Feb 2024, at 12:29, Jinze YANG <rttwyjz at gmail.com> wrote:
> >
> > Hello,
> > As you can see, boringssl's libcrypto.a and libssl.a are in two
> separate directories, as shown below:
> > root at VM-8-12-debian ~/boringssl/build # ls
> > bssl CMakeCache.txt cmake_install.cmake crypto_test decrepit
> embed_test_data_args.txt libpki.a pki_test ssl_test urandom_test
> > build.ninja CMakeFiles crypto crypto_test_data.cc decrepit_test
> libboringssl_gtest.a libtest_support_lib.a ssl tool util
> > root at VM-8-12-debian ~/boringssl/build # cd crypto
> > root at VM-8-12-debian ~/boringssl/build/crypto # ls
> > chacha cipher_extra CMakeFiles cmake_install.cmake crypto_test
> err_data.c fipsmodule libcrypto.a test urandom_test
> > root at VM-8-12-debian ~/boringssl/build/crypto # cd ..
> > root at VM-8-12-debian ~/boringssl/build # cd ssl
> > root at VM-8-12-debian ~/boringssl/build/ssl # ls
> > CMakeFiles cmake_install.cmake libssl.a ssl_test test
> >
> > I tried using absolute paths and adding
> -Wl,-rpath=/root/boringssl/build/ssl
> -Wl,-rpath=/root/boringssl/build/crypto -Wl,--enable-new-dtags but
> this Doesn't play any role.
> >
> > --
> > Best Regards,
> > Jinze Yang
> >
> > -------------------------------------------------------
> > > On Tue, Feb 20, 2024 at 12:23 AM 杨金泽 <rttwyjz at gmail.com
> <mailto:rttwyjz at gmail.com>> wrote:
> > > >
> > > > I encountered the following error when using boringssl to build
> > > Nginx:
> > > > checking for OpenSSL library ... not found
> > > > checking for OpenSSL library in /usr/local/ ... not found
> > > > checking for OpenSSL library in /usr/pkg/ ... not found
> > > > checking for OpenSSL library in /opt/local/ ... not found
> > > > ./auto/configure: error: SSL modules require the OpenSSL
> library.
> > > > You can either do not enable the modules, or install the OpenSSL
> > > library
> > > > into the system, or build the OpenSSL library statically from
> the
> > > source
> > > > with nginx by using --with-openssl=<path> option.
> > > >
> > > > At first I thought it was caused by openssl not existing, but
> when I
> > > ran openssl version -a, everything was normal:
> > > > root at iZ2hmeokcpbj42Z ~/nginx # openssl version -a
> > > > OpenSSL 3.0.11 19 Sep 2023 (Library: OpenSSL 3.0.11 19 Sep 2023)
> > > > built on: Mon Oct 23 17:52:22 2023 UTC
> > > > platform: debian-amd64
> > > > options: bn(64,64)
> > > > compiler: gcc -fPIC -pthread -m64 -Wa,--noexecstack -Wall
> > > -fzero-call-used-regs=used-gpr -DOPENSSL_TLS_SECURITY_LEVEL=2
> > > -Wa,--noexecstack -g -O2 -ffile-prefix-map=
> > > /build/reproducible-path/openssl-3.0.11=. -fstack-protector-strong
> > > -Wformat -Werror=format-security -DOPENSSL_USE_NODELETE -DL_ENDIAN
> > > -DOPENSSL_PIC -DOPENSSL_BUILDING_OPENSSL -DNDEBUG -Wdate-time
> > > -D_FORTIFY_SOURCE=2
> > > > OPENSSLDIR: "/usr/lib/ssl"
> > > > ENGINESDIR: "/usr/lib/x86_64-linux-gnu/engines-3"
> > > > MODULESDIR: "/usr/lib/x86_64-linux-gnu/ossl-modules"
> > > > Seeding source: os-specific
> > > > CPUINFO: OPENSSL_ia32cap=0xfffa32035f8bffff:0xd01e4fbb
> > > >
> > > > Later my friend and I discovered that the latest boringssl
> > > compatible OpenSSL version seems to have been upgraded to 3.2.x,
> but I
> > > am not sure if this is the problem. The final solution was to
> switch
> > > to https://github.com/google/boringssl
> > > /commit/c39e6cd9ec5acebb6de2adffc03cfe03b07f08ab this commit.But I
> > > don't think switching to a previous commit to build is a perfect
> > > solution, so I'd like to ask for some help.
> > > >
> > > > My build steps are as follows:
> > > > apt update
> > > > apt install build-essential ca-certificates zlib1g-dev libpcre3
> > > libpcre3-dev tar unzip libssl-dev wget curl git cmake ninja-build
> > > mercurial libunwind-dev pkg-config
> > > >
> > > > git clone https://github.com/google/boringssl.git
> > > > cd boringssl
> > > > mkdir build
> > > > cd build
> > > > cmake -GNinja ..
> > > > ninja
> > > > cd ../..
> > > >
> > > > git clone --recurse-submodules -j8
> > > https://github.com/google/ngx_brotli
> > > > cd ngx_brotli/deps/brotli
> > > > mkdir out && cd out
> > > > cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=OFF
> > > -DCMAKE_C_FLAGS="-Ofast -m64 -march=native -mtune=native -flto
> > > -funroll-loops -ffunction-sections -fdata-sections
> -Wl,--gc-sections"
> > > -DCMAKE_CXX_FLAGS ="-Ofast -m64 -march=native -mtune=native -flto
> > > -funroll-loops -ffunction-sections -fdata-sections
> -Wl,--gc-sections"
> > > -DCMAKE_INSTALL_PREFIX=./installed ..
> > > > cmake --build . --config Release --target brotlienc
> > > > cd ../../../..
> > > >
> > > > hg clone https://hg.nginx.org/nginx
> > > > cd nginx
> > > > ./auto/configure --user=www --group=www
> --prefix=/www/server/nginx
> > > --with-pcre --add-module=/root/ngx_brotli --with-http_v2_module
> > > --with-stream --with-stream_ssl_module --with-http_ssl_module
> > > --with-http_gzip_static_module --with-http_gunzip_module
> > > --with-http_sub_module --with-http_flv_module
> > > --with-http_addition_module --with-http_realip_module
> > > --with-http_mp4_module --with-ld -opt=-Wl,-E
> --with-cc-opt=-Wno-error
> > > --with-ld-opt=-ljemalloc --with-http_dav_module
> --with-http_v3_module
> > > --with-cc-opt=-I ../boringssl/include
> > > --with-ld-opt='-L../boringssl/build/ssl
> -L../boringssl/build/crypto'
> > > > make
> > > > make install
> > > >
> > > > System information:
> > > > checking for OS
> > > > + Linux 6.1.0-18-amd64 x86_64
> > > > checking for C compiler ... found
> > > > + using GNU C compiler
> > > > + gcc version: 12.2.0 (Debian 12.2.0-14)
> > >
> > > This does not look correct to me, based on my knowledge of
> OpenSSL. (I
> > > don't have experience with BoringSSL):
> > >
> > >     --with-ld-opt='-L../boringssl/build/ssl
> > > -L../boringssl/build/crypto'
> > >
> > > You are trying to link two OpenSSL-compatible libraries. They are
> > > libcrypto.{a|so}, and libssl.{a|so}. Those artifacts are usually
> > > placed in a  lib/ directory, not in separate ssl/ and crypto/
> > > directories. (Two separate directories may be a BoringSSL-ism).
> > >
> > > So I believe the proper flag would be similar to:
> > >
> > >     --with-ld-opt='-L../boringssl/build/lib
> > >
> > > You should also consider using the the following option so the
> library
> > > used at runtime is the same library used at compile and link time:
> > >
> > >     -Wl,-rpath=../boringssl/build/lib -Wl,--enable-new-dtags
> > >
> > > But you should change ../boringssl/build/lib to the full path, and
> not
> > > use the relative path.
> > >
> > > Also see
> > >
> <https://wiki.openssl.org/index.php/Compilation_and_Installation#Using
> > > _RPATHs>
> > > or the BoringSSL equivalent document.
> > >
> > > Jeff
> > > _______________________________________________
> > > nginx mailing list
> > > nginx at nginx.org <mailto:nginx at nginx.org>
> > > https://mailman.nginx.org/mailman/listinfo/nginx
> > _______________________________________________
> > nginx mailing list
> > nginx at nginx.org
> > https://mailman.nginx.org/mailman/listinfo/nginx
>
> ----
> Roman Arutyunyan
> arut at nginx.com
>
>
>
>
> _______________________________________________
> nginx mailing list
> nginx at nginx.org
> https://mailman.nginx.org/mailman/listinfo/nginx




-- 
Best Regards,
Jinze Yang
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.nginx.org/pipermail/nginx/attachments/20240220/3a01c562/attachment-0001.htm>
-------------- next part --------------


----------------------------------------
checking for C compiler


----------------------------------------
checking for gcc -pipe switch


----------------------------------------
checking for --with-ld-opt="-L/root/boringssl/build/ssl -L/root/boringssl/build/crypto -Wl,-rpath=/root/boringssl/build/ssl -Wl,-rpath=/root/boringssl/build/crypto -Wl,--enable-new-dtags"


----------------------------------------
checking for -Wl,-E switch


----------------------------------------
checking for gcc builtin atomic operations


----------------------------------------
checking for C99 variadic macros


----------------------------------------
checking for gcc variadic macros


----------------------------------------
checking for gcc builtin 64 bit byteswap


----------------------------------------
checking for unistd.h


----------------------------------------
checking for inttypes.h


----------------------------------------
checking for limits.h


----------------------------------------
checking for sys/filio.h

objs/autotest.c:3:10: fatal error: sys/filio.h: No such file or directory
    3 | #include <sys/filio.h>
      |          ^~~~~~~~~~~~~
compilation terminated.
----------


#include <sys/filio.h>

int main(void) {
    return 0;
}

----------
cc -o objs/autotest objs/autotest.c
----------

----------------------------------------
checking for sys/param.h


----------------------------------------
checking for sys/mount.h


----------------------------------------
checking for sys/statvfs.h


----------------------------------------
checking for crypt.h


----------------------------------------
checking for epoll


----------------------------------------
checking for EPOLLRDHUP


----------------------------------------
checking for EPOLLEXCLUSIVE


----------------------------------------
checking for eventfd()


----------------------------------------
checking for O_PATH


----------------------------------------
checking for sendfile()


----------------------------------------
checking for sendfile64()


----------------------------------------
checking for sys/prctl.h


----------------------------------------
checking for prctl(PR_SET_DUMPABLE)


----------------------------------------
checking for prctl(PR_SET_KEEPCAPS)


----------------------------------------
checking for capabilities


----------------------------------------
checking for crypt_r()


----------------------------------------
checking for sys/vfs.h


----------------------------------------
checking for BPF sockhash


----------------------------------------
checking for SO_COOKIE


----------------------------------------
checking for UDP_SEGMENT


----------------------------------------
checking for poll()


----------------------------------------
checking for /dev/poll

objs/autotest.c:4:10: fatal error: sys/devpoll.h: No such file or directory
    4 | #include <sys/devpoll.h>
      |          ^~~~~~~~~~~~~~~
compilation terminated.
----------

#include <sys/types.h>
#include <unistd.h>
#include <sys/devpoll.h>

int main(void) {
    int  n, dp; struct dvpoll  dvp;
                  dp = 0;
                  dvp.dp_fds = NULL;
                  dvp.dp_nfds = 0;
                  dvp.dp_timeout = 0;
                  n = ioctl(dp, DP_POLL, &dvp);
                  if (n == -1) return 1;
    return 0;
}

----------
cc -I/root/boringssl/include -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -o objs/autotest objs/autotest.c -L/root/boringssl/build/ssl -L/root/boringssl/build/crypto -Wl,-rpath=/root/boringssl/build/ssl -Wl,-rpath=/root/boringssl/build/crypto -Wl,--enable-new-dtags
----------

----------------------------------------
checking for kqueue

objs/autotest.c:4:10: fatal error: sys/event.h: No such file or directory
    4 | #include <sys/event.h>
      |          ^~~~~~~~~~~~~
compilation terminated.
----------

#include <sys/types.h>
#include <unistd.h>
#include <sys/event.h>

int main(void) {
    (void) kqueue();
    return 0;
}

----------
cc -I/root/boringssl/include -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -o objs/autotest objs/autotest.c -L/root/boringssl/build/ssl -L/root/boringssl/build/crypto -Wl,-rpath=/root/boringssl/build/ssl -Wl,-rpath=/root/boringssl/build/crypto -Wl,--enable-new-dtags
----------

----------------------------------------
checking for crypt()

/usr/bin/ld: /tmp/ccYR4UY1.o: in function `main':
autotest.c:(.text+0x19): undefined reference to `crypt'
collect2: error: ld returned 1 exit status
----------

#include <sys/types.h>
#include <unistd.h>


int main(void) {
    crypt("test", "salt");;
    return 0;
}

----------
cc -I/root/boringssl/include -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -o objs/autotest objs/autotest.c -L/root/boringssl/build/ssl -L/root/boringssl/build/crypto -Wl,-rpath=/root/boringssl/build/ssl -Wl,-rpath=/root/boringssl/build/crypto -Wl,--enable-new-dtags
----------

----------------------------------------
checking for crypt() in libcrypt


----------------------------------------
checking for F_READAHEAD

objs/autotest.c: In function 'main':
objs/autotest.c:7:14: error: 'F_READAHEAD' undeclared (first use in this function)
    7 |     fcntl(0, F_READAHEAD, 1);;
      |              ^~~~~~~~~~~
objs/autotest.c:7:14: note: each undeclared identifier is reported only once for each function it appears in
----------

#include <sys/types.h>
#include <unistd.h>
#include <fcntl.h>

int main(void) {
    fcntl(0, F_READAHEAD, 1);;
    return 0;
}

----------
cc -I/root/boringssl/include -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -o objs/autotest objs/autotest.c -L/root/boringssl/build/ssl -L/root/boringssl/build/crypto -Wl,-rpath=/root/boringssl/build/ssl -Wl,-rpath=/root/boringssl/build/crypto -Wl,--enable-new-dtags
----------

----------------------------------------
checking for posix_fadvise()


----------------------------------------
checking for O_DIRECT


----------------------------------------
checking for F_NOCACHE

objs/autotest.c: In function 'main':
objs/autotest.c:7:14: error: 'F_NOCACHE' undeclared (first use in this function)
    7 |     fcntl(0, F_NOCACHE, 1);;
      |              ^~~~~~~~~
objs/autotest.c:7:14: note: each undeclared identifier is reported only once for each function it appears in
----------

#include <sys/types.h>
#include <unistd.h>
#include <fcntl.h>

int main(void) {
    fcntl(0, F_NOCACHE, 1);;
    return 0;
}

----------
cc -I/root/boringssl/include -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -o objs/autotest objs/autotest.c -L/root/boringssl/build/ssl -L/root/boringssl/build/crypto -Wl,-rpath=/root/boringssl/build/ssl -Wl,-rpath=/root/boringssl/build/crypto -Wl,--enable-new-dtags
----------

----------------------------------------
checking for directio()

objs/autotest.c: In function 'main':
objs/autotest.c:8:5: warning: implicit declaration of function 'directio' [-Wimplicit-function-declaration]
    8 |     directio(0, DIRECTIO_ON);;
      |     ^~~~~~~~
objs/autotest.c:8:17: error: 'DIRECTIO_ON' undeclared (first use in this function)
    8 |     directio(0, DIRECTIO_ON);;
      |                 ^~~~~~~~~~~
objs/autotest.c:8:17: note: each undeclared identifier is reported only once for each function it appears in
----------

#include <sys/types.h>
#include <unistd.h>
#include <sys/types.h>
                  #include <sys/fcntl.h>

int main(void) {
    directio(0, DIRECTIO_ON);;
    return 0;
}

----------
cc -I/root/boringssl/include -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -o objs/autotest objs/autotest.c -L/root/boringssl/build/ssl -L/root/boringssl/build/crypto -Wl,-rpath=/root/boringssl/build/ssl -Wl,-rpath=/root/boringssl/build/crypto -Wl,--enable-new-dtags
----------

----------------------------------------
checking for statfs()


----------------------------------------
checking for statvfs()


----------------------------------------
checking for dlopen()


----------------------------------------
checking for sched_yield()


----------------------------------------
checking for sched_setaffinity()


----------------------------------------
checking for SO_SETFIB

objs/autotest.c: In function 'main':
objs/autotest.c:7:31: error: 'SO_SETFIB' undeclared (first use in this function)
    7 |     setsockopt(0, SOL_SOCKET, SO_SETFIB, NULL, 0);
      |                               ^~~~~~~~~
objs/autotest.c:7:31: note: each undeclared identifier is reported only once for each function it appears in
----------

#include <sys/types.h>
#include <unistd.h>
#include <sys/socket.h>

int main(void) {
    setsockopt(0, SOL_SOCKET, SO_SETFIB, NULL, 0);
    return 0;
}

----------
cc -I/root/boringssl/include -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -o objs/autotest objs/autotest.c -L/root/boringssl/build/ssl -L/root/boringssl/build/crypto -Wl,-rpath=/root/boringssl/build/ssl -Wl,-rpath=/root/boringssl/build/crypto -Wl,--enable-new-dtags
----------

----------------------------------------
checking for SO_REUSEPORT


----------------------------------------
checking for SO_ACCEPTFILTER

objs/autotest.c: In function 'main':
objs/autotest.c:7:31: error: 'SO_ACCEPTFILTER' undeclared (first use in this function); did you mean 'SO_LOCK_FILTER'?
    7 |     setsockopt(0, SOL_SOCKET, SO_ACCEPTFILTER, NULL, 0);
      |                               ^~~~~~~~~~~~~~~
      |                               SO_LOCK_FILTER
objs/autotest.c:7:31: note: each undeclared identifier is reported only once for each function it appears in
----------

#include <sys/types.h>
#include <unistd.h>
#include <sys/socket.h>

int main(void) {
    setsockopt(0, SOL_SOCKET, SO_ACCEPTFILTER, NULL, 0);
    return 0;
}

----------
cc -I/root/boringssl/include -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -o objs/autotest objs/autotest.c -L/root/boringssl/build/ssl -L/root/boringssl/build/crypto -Wl,-rpath=/root/boringssl/build/ssl -Wl,-rpath=/root/boringssl/build/crypto -Wl,--enable-new-dtags
----------

----------------------------------------
checking for SO_BINDANY

objs/autotest.c: In function 'main':
objs/autotest.c:7:31: error: 'SO_BINDANY' undeclared (first use in this function)
    7 |     setsockopt(0, SOL_SOCKET, SO_BINDANY, NULL, 0);
      |                               ^~~~~~~~~~
objs/autotest.c:7:31: note: each undeclared identifier is reported only once for each function it appears in
----------

#include <sys/types.h>
#include <unistd.h>
#include <sys/socket.h>

int main(void) {
    setsockopt(0, SOL_SOCKET, SO_BINDANY, NULL, 0);
    return 0;
}

----------
cc -I/root/boringssl/include -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -o objs/autotest objs/autotest.c -L/root/boringssl/build/ssl -L/root/boringssl/build/crypto -Wl,-rpath=/root/boringssl/build/ssl -Wl,-rpath=/root/boringssl/build/crypto -Wl,--enable-new-dtags
----------

----------------------------------------
checking for IP_TRANSPARENT


----------------------------------------
checking for IP_BINDANY

objs/autotest.c: In function 'main':
objs/autotest.c:8:31: error: 'IP_BINDANY' undeclared (first use in this function)
    8 |     setsockopt(0, IPPROTO_IP, IP_BINDANY, NULL, 0);
      |                               ^~~~~~~~~~
objs/autotest.c:8:31: note: each undeclared identifier is reported only once for each function it appears in
----------

#include <sys/types.h>
#include <unistd.h>
#include <sys/socket.h>
                  #include <netinet/in.h>

int main(void) {
    setsockopt(0, IPPROTO_IP, IP_BINDANY, NULL, 0);
    return 0;
}

----------
cc -I/root/boringssl/include -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -o objs/autotest objs/autotest.c -L/root/boringssl/build/ssl -L/root/boringssl/build/crypto -Wl,-rpath=/root/boringssl/build/ssl -Wl,-rpath=/root/boringssl/build/crypto -Wl,--enable-new-dtags
----------

----------------------------------------
checking for IP_BIND_ADDRESS_NO_PORT


----------------------------------------
checking for IP_RECVDSTADDR

objs/autotest.c: In function 'main':
objs/autotest.c:8:31: error: 'IP_RECVDSTADDR' undeclared (first use in this function); did you mean 'IP_ORIGDSTADDR'?
    8 |     setsockopt(0, IPPROTO_IP, IP_RECVDSTADDR, NULL, 0);
      |                               ^~~~~~~~~~~~~~
      |                               IP_ORIGDSTADDR
objs/autotest.c:8:31: note: each undeclared identifier is reported only once for each function it appears in
----------

#include <sys/types.h>
#include <unistd.h>
#include <sys/socket.h>
                  #include <netinet/in.h>

int main(void) {
    setsockopt(0, IPPROTO_IP, IP_RECVDSTADDR, NULL, 0);
    return 0;
}

----------
cc -I/root/boringssl/include -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -o objs/autotest objs/autotest.c -L/root/boringssl/build/ssl -L/root/boringssl/build/crypto -Wl,-rpath=/root/boringssl/build/ssl -Wl,-rpath=/root/boringssl/build/crypto -Wl,--enable-new-dtags
----------

----------------------------------------
checking for IP_SENDSRCADDR

objs/autotest.c: In function 'main':
objs/autotest.c:8:31: error: 'IP_SENDSRCADDR' undeclared (first use in this function)
    8 |     setsockopt(0, IPPROTO_IP, IP_SENDSRCADDR, NULL, 0);
      |                               ^~~~~~~~~~~~~~
objs/autotest.c:8:31: note: each undeclared identifier is reported only once for each function it appears in
----------

#include <sys/types.h>
#include <unistd.h>
#include <sys/socket.h>
                  #include <netinet/in.h>

int main(void) {
    setsockopt(0, IPPROTO_IP, IP_SENDSRCADDR, NULL, 0);
    return 0;
}

----------
cc -I/root/boringssl/include -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -o objs/autotest objs/autotest.c -L/root/boringssl/build/ssl -L/root/boringssl/build/crypto -Wl,-rpath=/root/boringssl/build/ssl -Wl,-rpath=/root/boringssl/build/crypto -Wl,--enable-new-dtags
----------

----------------------------------------
checking for IP_PKTINFO


----------------------------------------
checking for IPV6_RECVPKTINFO


----------------------------------------
checking for IP_MTU_DISCOVER


----------------------------------------
checking for IPV6_MTU_DISCOVER


----------------------------------------
checking for IP_DONTFRAG

objs/autotest.c: In function 'main':
objs/autotest.c:8:31: error: 'IP_DONTFRAG' undeclared (first use in this function); did you mean 'IPV6_DONTFRAG'?
    8 |     setsockopt(0, IPPROTO_IP, IP_DONTFRAG, NULL, 0);
      |                               ^~~~~~~~~~~
      |                               IPV6_DONTFRAG
objs/autotest.c:8:31: note: each undeclared identifier is reported only once for each function it appears in
----------

#include <sys/types.h>
#include <unistd.h>
#include <sys/socket.h>
                  #include <netinet/in.h>

int main(void) {
    setsockopt(0, IPPROTO_IP, IP_DONTFRAG, NULL, 0);
    return 0;
}

----------
cc -I/root/boringssl/include -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -o objs/autotest objs/autotest.c -L/root/boringssl/build/ssl -L/root/boringssl/build/crypto -Wl,-rpath=/root/boringssl/build/ssl -Wl,-rpath=/root/boringssl/build/crypto -Wl,--enable-new-dtags
----------

----------------------------------------
checking for IPV6_DONTFRAG


----------------------------------------
checking for TCP_DEFER_ACCEPT


----------------------------------------
checking for TCP_KEEPIDLE


----------------------------------------
checking for TCP_FASTOPEN


----------------------------------------
checking for TCP_INFO


----------------------------------------
checking for accept4()


----------------------------------------
checking for int size


----------------------------------------
checking for long size


----------------------------------------
checking for long long size


----------------------------------------
checking for void * size


----------------------------------------
checking for uint32_t


----------------------------------------
checking for uint64_t


----------------------------------------
checking for sig_atomic_t


----------------------------------------
checking for sig_atomic_t size


----------------------------------------
checking for socklen_t


----------------------------------------
checking for in_addr_t


----------------------------------------
checking for in_port_t


----------------------------------------
checking for rlim_t


----------------------------------------
checking for uintptr_t


----------------------------------------
checking for system byte ordering


----------------------------------------
checking for size_t size


----------------------------------------
checking for off_t size


----------------------------------------
checking for time_t size


----------------------------------------
checking for AF_INET6


----------------------------------------
checking for setproctitle()

objs/autotest.c: In function 'main':
objs/autotest.c:7:5: warning: implicit declaration of function 'setproctitle' [-Wimplicit-function-declaration]
    7 |     setproctitle("test");;
      |     ^~~~~~~~~~~~
/usr/bin/ld: /tmp/ccfGBZko.o: in function `main':
autotest.c:(.text+0x14): undefined reference to `setproctitle'
collect2: error: ld returned 1 exit status
----------

#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>

int main(void) {
    setproctitle("test");;
    return 0;
}

----------
cc -I/root/boringssl/include -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -o objs/autotest objs/autotest.c -L/root/boringssl/build/ssl -L/root/boringssl/build/crypto -Wl,-rpath=/root/boringssl/build/ssl -Wl,-rpath=/root/boringssl/build/crypto -Wl,--enable-new-dtags
----------

----------------------------------------
checking for pread()


----------------------------------------
checking for pwrite()


----------------------------------------
checking for pwritev()


----------------------------------------
checking for strerrordesc_np()

objs/autotest.c: In function 'main':
objs/autotest.c:7:16: warning: assignment discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
    7 |     char *p; p = strerrordesc_np(0);
      |                ^

----------------------------------------
checking for localtime_r()


----------------------------------------
checking for clock_gettime(CLOCK_MONOTONIC)


----------------------------------------
checking for posix_memalign()


----------------------------------------
checking for memalign()


----------------------------------------
checking for mmap(MAP_ANON|MAP_SHARED)


----------------------------------------
checking for mmap("/dev/zero", MAP_SHARED)


----------------------------------------
checking for System V shared memory


----------------------------------------
checking for POSIX semaphores


----------------------------------------
checking for struct msghdr.msg_control


----------------------------------------
checking for ioctl(FIONBIO)


----------------------------------------
checking for ioctl(FIONREAD)


----------------------------------------
checking for struct tm.tm_gmtoff


----------------------------------------
checking for struct dirent.d_namlen

objs/autotest.c: In function 'main':
objs/autotest.c:8:29: error: 'struct dirent' has no member named 'd_namlen'; did you mean 'd_name'?
    8 |     struct dirent  dir; dir.d_namlen = 0;
      |                             ^~~~~~~~
      |                             d_name
objs/autotest.c:9:42: error: 'struct dirent' has no member named 'd_namlen'; did you mean 'd_name'?
    9 |                   printf("%d", (int) dir.d_namlen);
      |                                          ^~~~~~~~
      |                                          d_name
----------

#include <sys/types.h>
#include <unistd.h>
#include <dirent.h>
                  #include <stdio.h>

int main(void) {
    struct dirent  dir; dir.d_namlen = 0;
                  printf("%d", (int) dir.d_namlen);
    return 0;
}

----------
cc -I/root/boringssl/include -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -o objs/autotest objs/autotest.c -L/root/boringssl/build/ssl -L/root/boringssl/build/crypto -Wl,-rpath=/root/boringssl/build/ssl -Wl,-rpath=/root/boringssl/build/crypto -Wl,--enable-new-dtags
----------

----------------------------------------
checking for struct dirent.d_type


----------------------------------------
checking for sysconf(_SC_NPROCESSORS_ONLN)


----------------------------------------
checking for sysconf(_SC_LEVEL1_DCACHE_LINESIZE)


----------------------------------------
checking for openat(), fstatat()


----------------------------------------
checking for getaddrinfo()


----------------------------------------
checking for PCRE2 library

objs/autotest.c:5:36: fatal error: pcre2.h: No such file or directory
    5 |                           #include <pcre2.h>
      |                                    ^~~~~~~~~
compilation terminated.
----------

#include <sys/types.h>
#include <unistd.h>
#define PCRE2_CODE_UNIT_WIDTH 8
                          #include <pcre2.h>

int main(void) {
    pcre2_code *re;
                          re = pcre2_compile(NULL, 0, 0, NULL, NULL, NULL);
                          if (re == NULL) return 1;
    return 0;
}

----------
cc -I/root/boringssl/include -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -o objs/autotest objs/autotest.c -L/root/boringssl/build/ssl -L/root/boringssl/build/crypto -Wl,-rpath=/root/boringssl/build/ssl -Wl,-rpath=/root/boringssl/build/crypto -Wl,--enable-new-dtags -lpcre2-8
----------

----------------------------------------
checking for PCRE library


----------------------------------------
checking for PCRE JIT support


----------------------------------------
checking for OpenSSL library

/usr/bin/ld: /root/boringssl/build/ssl/libssl.a(ssl_lib.cc.o):(.data.rel.local.DW.ref.__gxx_personality_v0[DW.ref.__gxx_personality_v0]+0x0): undefined reference to `__gxx_personality_v0'
/usr/bin/ld: /root/boringssl/build/ssl/libssl.a(ssl_key_share.cc.o): in function `bssl::(anonymous namespace)::ECKeyShare::~ECKeyShare()':
/root/boringssl/ssl/ssl_key_share.cc:41: undefined reference to `operator delete(void*, unsigned long)'
/usr/bin/ld: /root/boringssl/build/ssl/libssl.a(ssl_key_share.cc.o): in function `bssl::(anonymous namespace)::X25519KeyShare::~X25519KeyShare()':
/root/boringssl/ssl/ssl_key_share.cc:138: undefined reference to `operator delete(void*, unsigned long)'
/usr/bin/ld: /root/boringssl/build/ssl/libssl.a(ssl_key_share.cc.o): in function `bssl::(anonymous namespace)::X25519Kyber768KeyShare::~X25519Kyber768KeyShare()':
/root/boringssl/ssl/ssl_key_share.cc:194: undefined reference to `operator delete(void*, unsigned long)'
/usr/bin/ld: /root/boringssl/build/ssl/libssl.a(ssl_key_share.cc.o): in function `bssl::SSLKeyShare::~SSLKeyShare()':
/root/boringssl/ssl/internal.h:1082: undefined reference to `operator delete(void*, unsigned long)'
/usr/bin/ld: /root/boringssl/build/ssl/libssl.a(ssl_key_share.cc.o):(.data.rel.ro+0x0): undefined reference to `vtable for __cxxabiv1::__si_class_type_info'
/usr/bin/ld: /root/boringssl/build/ssl/libssl.a(ssl_key_share.cc.o):(.data.rel.ro+0x18): undefined reference to `vtable for __cxxabiv1::__si_class_type_info'
/usr/bin/ld: /root/boringssl/build/ssl/libssl.a(ssl_key_share.cc.o):(.data.rel.ro+0x30): undefined reference to `vtable for __cxxabiv1::__si_class_type_info'
/usr/bin/ld: /root/boringssl/build/ssl/libssl.a(ssl_key_share.cc.o):(.data.rel.ro._ZTIN4bssl11SSLKeyShareE[_ZTIN4bssl11SSLKeyShareE]+0x0): undefined reference to `vtable for __cxxabiv1::__class_type_info'
collect2: error: ld returned 1 exit status
----------

#include <sys/types.h>
#include <unistd.h>
#include <openssl/ssl.h>

int main(void) {
    SSL_CTX_set_options(NULL, 0);
    return 0;
}

----------
cc -I/root/boringssl/include -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -o objs/autotest objs/autotest.c -L/root/boringssl/build/ssl -L/root/boringssl/build/crypto -Wl,-rpath=/root/boringssl/build/ssl -Wl,-rpath=/root/boringssl/build/crypto -Wl,--enable-new-dtags -lssl -lcrypto
----------

----------------------------------------
checking for OpenSSL library in /usr/local/

/usr/bin/ld: /root/boringssl/build/ssl/libssl.a(ssl_lib.cc.o):(.data.rel.local.DW.ref.__gxx_personality_v0[DW.ref.__gxx_personality_v0]+0x0): undefined reference to `__gxx_personality_v0'
/usr/bin/ld: /root/boringssl/build/ssl/libssl.a(ssl_key_share.cc.o): in function `bssl::(anonymous namespace)::ECKeyShare::~ECKeyShare()':
/root/boringssl/ssl/ssl_key_share.cc:41: undefined reference to `operator delete(void*, unsigned long)'
/usr/bin/ld: /root/boringssl/build/ssl/libssl.a(ssl_key_share.cc.o): in function `bssl::(anonymous namespace)::X25519KeyShare::~X25519KeyShare()':
/root/boringssl/ssl/ssl_key_share.cc:138: undefined reference to `operator delete(void*, unsigned long)'
/usr/bin/ld: /root/boringssl/build/ssl/libssl.a(ssl_key_share.cc.o): in function `bssl::(anonymous namespace)::X25519Kyber768KeyShare::~X25519Kyber768KeyShare()':
/root/boringssl/ssl/ssl_key_share.cc:194: undefined reference to `operator delete(void*, unsigned long)'
/usr/bin/ld: /root/boringssl/build/ssl/libssl.a(ssl_key_share.cc.o): in function `bssl::SSLKeyShare::~SSLKeyShare()':
/root/boringssl/ssl/internal.h:1082: undefined reference to `operator delete(void*, unsigned long)'
/usr/bin/ld: /root/boringssl/build/ssl/libssl.a(ssl_key_share.cc.o):(.data.rel.ro+0x0): undefined reference to `vtable for __cxxabiv1::__si_class_type_info'
/usr/bin/ld: /root/boringssl/build/ssl/libssl.a(ssl_key_share.cc.o):(.data.rel.ro+0x18): undefined reference to `vtable for __cxxabiv1::__si_class_type_info'
/usr/bin/ld: /root/boringssl/build/ssl/libssl.a(ssl_key_share.cc.o):(.data.rel.ro+0x30): undefined reference to `vtable for __cxxabiv1::__si_class_type_info'
/usr/bin/ld: /root/boringssl/build/ssl/libssl.a(ssl_key_share.cc.o):(.data.rel.ro._ZTIN4bssl11SSLKeyShareE[_ZTIN4bssl11SSLKeyShareE]+0x0): undefined reference to `vtable for __cxxabiv1::__class_type_info'
collect2: error: ld returned 1 exit status
----------

#include <sys/types.h>
#include <unistd.h>
#include <openssl/ssl.h>

int main(void) {
    SSL_CTX_set_options(NULL, 0);
    return 0;
}

----------
cc -I/root/boringssl/include -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -I /usr/local/include -o objs/autotest objs/autotest.c -L/root/boringssl/build/ssl -L/root/boringssl/build/crypto -Wl,-rpath=/root/boringssl/build/ssl -Wl,-rpath=/root/boringssl/build/crypto -Wl,--enable-new-dtags -L/usr/local/lib -lssl -lcrypto
----------

----------------------------------------
checking for OpenSSL library in /usr/pkg/

/usr/bin/ld: /root/boringssl/build/ssl/libssl.a(ssl_lib.cc.o):(.data.rel.local.DW.ref.__gxx_personality_v0[DW.ref.__gxx_personality_v0]+0x0): undefined reference to `__gxx_personality_v0'
/usr/bin/ld: /root/boringssl/build/ssl/libssl.a(ssl_key_share.cc.o): in function `bssl::(anonymous namespace)::ECKeyShare::~ECKeyShare()':
/root/boringssl/ssl/ssl_key_share.cc:41: undefined reference to `operator delete(void*, unsigned long)'
/usr/bin/ld: /root/boringssl/build/ssl/libssl.a(ssl_key_share.cc.o): in function `bssl::(anonymous namespace)::X25519KeyShare::~X25519KeyShare()':
/root/boringssl/ssl/ssl_key_share.cc:138: undefined reference to `operator delete(void*, unsigned long)'
/usr/bin/ld: /root/boringssl/build/ssl/libssl.a(ssl_key_share.cc.o): in function `bssl::(anonymous namespace)::X25519Kyber768KeyShare::~X25519Kyber768KeyShare()':
/root/boringssl/ssl/ssl_key_share.cc:194: undefined reference to `operator delete(void*, unsigned long)'
/usr/bin/ld: /root/boringssl/build/ssl/libssl.a(ssl_key_share.cc.o): in function `bssl::SSLKeyShare::~SSLKeyShare()':
/root/boringssl/ssl/internal.h:1082: undefined reference to `operator delete(void*, unsigned long)'
/usr/bin/ld: /root/boringssl/build/ssl/libssl.a(ssl_key_share.cc.o):(.data.rel.ro+0x0): undefined reference to `vtable for __cxxabiv1::__si_class_type_info'
/usr/bin/ld: /root/boringssl/build/ssl/libssl.a(ssl_key_share.cc.o):(.data.rel.ro+0x18): undefined reference to `vtable for __cxxabiv1::__si_class_type_info'
/usr/bin/ld: /root/boringssl/build/ssl/libssl.a(ssl_key_share.cc.o):(.data.rel.ro+0x30): undefined reference to `vtable for __cxxabiv1::__si_class_type_info'
/usr/bin/ld: /root/boringssl/build/ssl/libssl.a(ssl_key_share.cc.o):(.data.rel.ro._ZTIN4bssl11SSLKeyShareE[_ZTIN4bssl11SSLKeyShareE]+0x0): undefined reference to `vtable for __cxxabiv1::__class_type_info'
collect2: error: ld returned 1 exit status
----------

#include <sys/types.h>
#include <unistd.h>
#include <openssl/ssl.h>

int main(void) {
    SSL_CTX_set_options(NULL, 0);
    return 0;
}

----------
cc -I/root/boringssl/include -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -I /usr/pkg/include -o objs/autotest objs/autotest.c -L/root/boringssl/build/ssl -L/root/boringssl/build/crypto -Wl,-rpath=/root/boringssl/build/ssl -Wl,-rpath=/root/boringssl/build/crypto -Wl,--enable-new-dtags -L/usr/pkg/lib -lssl -lcrypto
----------

----------------------------------------
checking for OpenSSL library in /opt/local/

/usr/bin/ld: /root/boringssl/build/ssl/libssl.a(ssl_lib.cc.o):(.data.rel.local.DW.ref.__gxx_personality_v0[DW.ref.__gxx_personality_v0]+0x0): undefined reference to `__gxx_personality_v0'
/usr/bin/ld: /root/boringssl/build/ssl/libssl.a(ssl_key_share.cc.o): in function `bssl::(anonymous namespace)::ECKeyShare::~ECKeyShare()':
/root/boringssl/ssl/ssl_key_share.cc:41: undefined reference to `operator delete(void*, unsigned long)'
/usr/bin/ld: /root/boringssl/build/ssl/libssl.a(ssl_key_share.cc.o): in function `bssl::(anonymous namespace)::X25519KeyShare::~X25519KeyShare()':
/root/boringssl/ssl/ssl_key_share.cc:138: undefined reference to `operator delete(void*, unsigned long)'
/usr/bin/ld: /root/boringssl/build/ssl/libssl.a(ssl_key_share.cc.o): in function `bssl::(anonymous namespace)::X25519Kyber768KeyShare::~X25519Kyber768KeyShare()':
/root/boringssl/ssl/ssl_key_share.cc:194: undefined reference to `operator delete(void*, unsigned long)'
/usr/bin/ld: /root/boringssl/build/ssl/libssl.a(ssl_key_share.cc.o): in function `bssl::SSLKeyShare::~SSLKeyShare()':
/root/boringssl/ssl/internal.h:1082: undefined reference to `operator delete(void*, unsigned long)'
/usr/bin/ld: /root/boringssl/build/ssl/libssl.a(ssl_key_share.cc.o):(.data.rel.ro+0x0): undefined reference to `vtable for __cxxabiv1::__si_class_type_info'
/usr/bin/ld: /root/boringssl/build/ssl/libssl.a(ssl_key_share.cc.o):(.data.rel.ro+0x18): undefined reference to `vtable for __cxxabiv1::__si_class_type_info'
/usr/bin/ld: /root/boringssl/build/ssl/libssl.a(ssl_key_share.cc.o):(.data.rel.ro+0x30): undefined reference to `vtable for __cxxabiv1::__si_class_type_info'
/usr/bin/ld: /root/boringssl/build/ssl/libssl.a(ssl_key_share.cc.o):(.data.rel.ro._ZTIN4bssl11SSLKeyShareE[_ZTIN4bssl11SSLKeyShareE]+0x0): undefined reference to `vtable for __cxxabiv1::__class_type_info'
collect2: error: ld returned 1 exit status
----------

#include <sys/types.h>
#include <unistd.h>
#include <openssl/ssl.h>

int main(void) {
    SSL_CTX_set_options(NULL, 0);
    return 0;
}

----------
cc -I/root/boringssl/include -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -I /opt/local/include -o objs/autotest objs/autotest.c -L/root/boringssl/build/ssl -L/root/boringssl/build/crypto -Wl,-rpath=/root/boringssl/build/ssl -Wl,-rpath=/root/boringssl/build/crypto -Wl,--enable-new-dtags -L/opt/local/lib -lssl -lcrypto
----------


More information about the nginx mailing list