add --enable-static-tor to our configure script
This implements the feature request in bug #2702
This commit is contained in:
parent
ee871e7a0e
commit
fe051a43c1
39
INSTALL
39
INSTALL
|
@ -23,3 +23,42 @@ If it doesn't build for you:
|
||||||
Lastly, check out
|
Lastly, check out
|
||||||
https://www.torproject.org/docs/faq#DoesntWork
|
https://www.torproject.org/docs/faq#DoesntWork
|
||||||
|
|
||||||
|
An example of how to build a mostly static Tor:
|
||||||
|
|
||||||
|
Libevent should be built with:
|
||||||
|
% ./configure --disable-shared --enable-static --with-pic
|
||||||
|
|
||||||
|
An example of how to build a mostly static Tor:
|
||||||
|
./configure --enable-static-libevent \
|
||||||
|
--enable-static-openssl \
|
||||||
|
--enable-static-zlib \
|
||||||
|
--with-libevent-dir=/tmp/static-tor/libevent-1.4.14b-stable \
|
||||||
|
--with-openssl-dir=/tmp/static-tor/openssl-0.9.8r/ \
|
||||||
|
--with-zlib-dir=/tmp/static-tor/zlib-1.2.5
|
||||||
|
|
||||||
|
An example of how to build an entirely static Tor (no Mac OS X support, sorry):
|
||||||
|
./configure --enable-static-tor \
|
||||||
|
--enable-static-libevent \
|
||||||
|
--enable-static-openssl \
|
||||||
|
--enable-static-zlib \
|
||||||
|
--with-libevent-dir=/tmp/static-tor/libevent-1.4.14b-stable \
|
||||||
|
--with-openssl-dir=/tmp/static-tor/openssl-0.9.8r/ \
|
||||||
|
--with-zlib-dir=/tmp/static-tor/zlib-1.2.5
|
||||||
|
|
||||||
|
This currently does not work with --enable-gcc-hardening because of libevent issues:
|
||||||
|
|
||||||
|
configure:6176: gcc -o conftest -D_FORTIFY_SOURCE=2 -fstack-protector-all -fwrapv -fPIE -Wstack-protector
|
||||||
|
--param ssp-buffer-size=1 -I/tmp/static-tor/libevent-1.4.14b-stable -I${top_srcdir}/src/common -
|
||||||
|
L/tmp/static-tor/libevent-1.4.14b-stable -pie conftest.c -lpthread -ldl -levent -lrt >&5
|
||||||
|
/usr/bin/ld: /tmp/static-tor/libevent-1.4.14b-stable/libevent.a(event.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a shared object; recompile with -fPIC
|
||||||
|
/tmp/static-tor/libevent-1.4.14b-stable/libevent.a: could not read symbols: Bad value
|
||||||
|
collect2: ld returned 1 exit status
|
||||||
|
configure:6176: $? = 1
|
||||||
|
|
||||||
|
This produces the following Tor binaries on Gnu/Linux x86-64:
|
||||||
|
|
||||||
|
% file src/or/tor
|
||||||
|
src/or/tor: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), statically linked, for GNU/Linux 2.6.15, not stripped
|
||||||
|
|
||||||
|
% ldd src/or/tor
|
||||||
|
not a dynamic executable
|
||||||
|
|
|
@ -0,0 +1,5 @@
|
||||||
|
o Minor enhancement
|
||||||
|
- Implements --enable-static-tor for configure time. Closes bug 2702.
|
||||||
|
Idea, general hackery and thoughts from Alexei Czeskis, John Gilmore,
|
||||||
|
Jacob Appelbaum.
|
||||||
|
|
25
configure.in
25
configure.in
|
@ -32,6 +32,17 @@ AC_ARG_ENABLE(static-libevent,
|
||||||
AS_HELP_STRING(--enable-static-libevent, Link against a static libevent library. Requires --with-libevent-dir))
|
AS_HELP_STRING(--enable-static-libevent, Link against a static libevent library. Requires --with-libevent-dir))
|
||||||
AC_ARG_ENABLE(static-zlib,
|
AC_ARG_ENABLE(static-zlib,
|
||||||
AS_HELP_STRING(--enable-static-zlib, Link against a static zlib library. Requires --with-zlib-dir))
|
AS_HELP_STRING(--enable-static-zlib, Link against a static zlib library. Requires --with-zlib-dir))
|
||||||
|
AC_ARG_ENABLE(static-tor,
|
||||||
|
AS_HELP_STRING(--enable-static-tor, Create an entirely static Tor binary. Requires --static-openssl
|
||||||
|
--static-libevent and --static-zlib))
|
||||||
|
|
||||||
|
if test "$enable_static_tor" = "yes"; then
|
||||||
|
enable_static_libevent="yes";
|
||||||
|
enable_static_openssl="yes";
|
||||||
|
enable_static_zlib="yes";
|
||||||
|
AC_MSG_NOTICE("We're attempting to build a static Tor.")
|
||||||
|
CFLAGS="$CFLAGS -static"
|
||||||
|
fi
|
||||||
|
|
||||||
if test x$enable_buf_freelists != xno; then
|
if test x$enable_buf_freelists != xno; then
|
||||||
AC_DEFINE(ENABLE_BUF_FREELISTS, 1,
|
AC_DEFINE(ENABLE_BUF_FREELISTS, 1,
|
||||||
|
@ -516,6 +527,20 @@ else
|
||||||
fi
|
fi
|
||||||
AC_SUBST(TOR_ZLIB_LIBS)
|
AC_SUBST(TOR_ZLIB_LIBS)
|
||||||
|
|
||||||
|
if test "$enable_static_tor" = "yes"; then
|
||||||
|
if test "$enable_static_libevent" = "no"; then
|
||||||
|
AC_MSG_ERROR("You must configure with --enable-static-libevent")
|
||||||
|
fi
|
||||||
|
if test "$enable_static_openssl" = "no"; then
|
||||||
|
AC_MSG_ERROR("You must configure with --enable-static-openssl")
|
||||||
|
fi
|
||||||
|
if test "$enable_static_zlib" = "no"; then
|
||||||
|
AC_MSG_ERROR("You must configure with --enable-static-zlib")
|
||||||
|
fi
|
||||||
|
AC_MSG_NOTICE("We're attempting to build a static Tor.")
|
||||||
|
CFLAGS="$CFLAGS -static"
|
||||||
|
fi
|
||||||
|
|
||||||
dnl Make sure to enable support for large off_t if available.
|
dnl Make sure to enable support for large off_t if available.
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue