Force linking to static archives during make?

Jeffrey Walton noloader at gmail.com
Tue Dec 17 21:16:55 UTC 2013


This should be my last build question.

$ ./auto/configure --with-http_ssl_module ...
--with-cc-opt="-I/usr/local/ssl/include"
--with-ld-opt="-L/usr/local/ssl/lib /usr/local/ssl/lib/libssl.a
/usr/local/ssl/lib/libcrypto.a -ldl"
...
$ make
...

Results in the following. Note that OpenSSL is still dynamically linked:

$ ldd objs/nginx
    linux-vdso.so.1 =>  (0x00007fffd0dfe000)
    libdl.so.2 => /lib64/libdl.so.2 (0x0000003ebf600000)
    libpthread.so.0 => /lib64/libpthread.so.0 (0x0000003ebfa00000)
    libcrypt.so.1 => /lib64/libcrypt.so.1 (0x0000003ed3e00000)
    libpcre.so.1 => /lib64/libpcre.so.1 (0x0000003ec0a00000)
    libssl.so.1.0.0 => not found
    libcrypto.so.1.0.0 => not found
    libz.so.1 => /lib64/libz.so.1 (0x0000003ebfe00000)
    libc.so.6 => /lib64/libc.so.6 (0x0000003ebf200000)
    /lib64/ld-linux-x86-64.so.2 (0x0000003ebea00000)
    libfreebl3.so => /lib64/libfreebl3.so (0x0000003ec7a00000)

*****

Adding -Bstatic does not help even though its clearly on the link command line:

$ ./auto/configure --with-http_ssl_module ...
--with-cc-opt="-I/usr/local/ssl/include" --with-ld-opt="-Bstatic
-L/usr/local/ssl/lib /usr/local/ssl/lib/libssl.a
/usr/local/ssl/lib/libcrypto.a -ldl"
...
$ make
...
objs/src/http/modules/ngx_http_upstream_keepalive_module.o \
objs/ngx_modules.o \
-Bstatic -L/usr/local/ssl/lib /usr/local/ssl/lib/libssl.a
/usr/local/ssl/lib/libcrypto.a -ldl -lpthread -lcrypt -lpcre -lssl
-lcrypto -lz
...
$ ldd objs/nginx
    linux-vdso.so.1 =>  (0x00007fffd4fc6000)
    libdl.so.2 => /lib64/libdl.so.2 (0x0000003ebf600000)
    ...
    libssl.so.1.0.0 => not found
    libcrypto.so.1.0.0 => not found

*****

Omitting -L/usr/local/ssl/lib results in a failed configure.

*****

How does one force nginx to use static linking for a library?

Thanks in advance.



More information about the nginx mailing list