2017-09-14 4 views
0

Tor Onion Proxy Library에서 계속 사용하려면 Linux 용 Android 용 최신 Tor를 빌드해야합니다.Linux 용 Android 용 빌드

최신 안정기는 maint-0.3.1입니다.

Android NDK r15b를 사용하고 있습니다.

답변

0

아래에서 설명 할 해결책을 준비했습니다. 그것은 다양한 소스의 구성입니다. 스크립트는 더욱 최적화 될 수 있습니다.

지침은 사용 토르를 구축 할 수 있도록 :

  • 안드로이드 SDK 25
  • 안드로이드 NDK의 r15b
  • 토르 MAINT-0.3.1
  • openssl1.1.0f
  • libevent 2.0.23 -stable-rc

주요 단계는 다음과 같습니다.

  • 빌드하려면 openssl
  • 빌드 libevent 전체 스크립트가 here을 다운로드 할 수 있습니다

  • 빌드 토르. '네이티브'라는 폴더에 우리가 만든

    export ANDROID_NDK_HOME=/home/marco/Android/ndkr15b 
    

    작업 :

    설치된 NDK의 위치를 ​​지정

    rm -Rf native 
    mkdir native 
    mkdir native/lib 
    cd native 
    

    빌드하려면 openssl

    도 참조 these instructions.

    wget https://www.openssl.org/source/openssl-1.1.0f.tar.gz 
    

    setenv-android.sh는 here에서 다운로드하고, 편집 또는 사용하도록 이미 개질 this version를 사용 _ANDROID_EABI = "아암 리눅스 androideabi-4.9"될 수있다.

    # ANDROID_NDK_ROOT is required by setenv-android.sh 
    export ANDROID_NDK_ROOT=$ANDROID_NDK_HOME 
    
    . ../setenv-android.sh 
    # ANDROID_TOOLCHAIN is now set 
    
    tar -xvzf openssl-1.1.0f.tar.gz 
    cd openssl-1.1.0f 
    
    # openssl engine is needed by libevent 
    ./config shared no-ssl2 no-ssl3 no-comp no-hw --openssldir=/usr/local/ssl/android-16/ 
    
    make depend 
    
    make all 
    

    돌봐 : 다음 명령은/usr/지방/포함/OpenSSL을,/usr/local/lib 등의/각각 크로스 컴파일 된 헤더와 libs와 설치합니다. 교차 컴파일 된 라이브러리는 토르와 링크 할 때 마지막 단계에서 사용됩니다.

    sudo -E make install CC=$ANDROID_TOOLCHAIN/arm-linux-androideabi-gcc RANLIB=$ANDROID_TOOLCHAIN/arm-linux-androideabi-ranlib 
    
    cd .. 
    # go back to native folder 
    
    # when linking to, openssl libraries are still linked from /usr/local/lib/ 
    cp ./openssl-1.1.0f/'*'.a lib/ 
    cp -R ./openssl-1.1.0f/include/openssl ./include 
    

    빌드 libevent

    우리는 우리가 수정 libevent이 repo을 사용할 수 있습니다 편의를 위해 arc4random_addrandom에 대한 참조를 제거해야
    rm -Rf libevent 
    

    . diff을 참조하십시오.

    git clone https://github.com/marcotessarotto/libevent 
    cd libevent 
    
    export NDK=$ANDROID_NDK_ROOT 
    
    $NDK/build/tools/make-standalone-toolchain.sh --platform=android-16 --toolchain=arm-linux-androideabi-4.9 --install-dir=`pwd`/android-toolchain-arm 
    export TOOLCHAIN_PATH=`pwd`/android-toolchain-arm/bin 
    export TOOL=arm-linux-androideabi 
    export NDK_TOOLCHAIN_BASENAME=${TOOLCHAIN_PATH}/${TOOL} 
    export CC="$NDK_TOOLCHAIN_BASENAME-gcc -D__ANDROID_API__=16 " 
    export CXX="$NDK_TOOLCHAIN_BASENAME-g++ -D__ANDROID_API__=16 " 
    export LINK=${CXX} 
    export LD=$NDK_TOOLCHAIN_BASENAME-ld 
    export AR=$NDK_TOOLCHAIN_BASENAME-ar 
    export RANLIB=$NDK_TOOLCHAIN_BASENAME-ranlib 
    export STRIP=$NDK_TOOLCHAIN_BASENAME-strip 
    export ARCH_FLAGS="-march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16" 
    export ARCH_LINK="-march=armv7-a -Wl,--fix-cortex-a8" 
    export CPPFLAGS=" ${ARCH_FLAGS} -fpic -ffunction-sections -funwind-tables -fstack-protector -fno-strict-aliasing -finline-limit=64 " 
    export CXXFLAGS=" ${ARCH_FLAGS} -fpic -ffunction-sections -funwind-tables -fstack-protector -fno-strict-aliasing -finline-limit=64 -frtti -fexceptions " 
    export CFLAGS=" ${ARCH_FLAGS} -fpic -ffunction-sections -funwind-tables -fstack-protector -fno-strict-aliasing -finline-limit=64 " 
    export LDFLAGS=" ${ARCH_LINK} " 
    
    ./autogen.sh 
    
    ./configure --host=arm-linux-androideabi 
    
    make 
    # all tests should pass successfully 
    
    #copy headers and libary in work folder 
    cp .libs/libevent.a ../lib 
    cp -R include/* ../include 
    cd .. 
    

    빌드 토 여기

    git clone https://github.com/torproject/tor 
    cd tor/ 
    git checkout remotes/origin/maint-0.3.1 
    
    export NDK_ROOT=$ANDROID_NDK_ROOT 
    
    echo "SETTING UP CROSS COMPILER" 
    # export needed variables 
    export NDK_TOOLCHAIN=$NDK_ROOT/my-android-toolchain 
    
    # remove the old toolchain 
    rm -rf $NDK_TOOLCHAIN 
    # create the toolchain 
    $NDK_ROOT/build/tools/make-standalone-toolchain.sh --platform=android-16 --install-dir=$NDK_TOOLCHAIN 
    
    # export needed variables for crosscompile 
    export PATH="$NDK_TOOLCHAIN/bin/:$PATH" 
    
    export HOST=arm-linux-androideabi 
    
    export CC=$HOST-gcc 
    export CXX=$HOST-g++ 
    export AR=$HOST-ar 
    export LD=$HOST-ld 
    export AS=$HOST-as 
    export NM=$HOST-nm 
    export STRIP=$HOST-strip 
    export RANLIB=$HOST-ranlib 
    export OBJDUMP=$HOST-objdump 
    
    
    export CPPFLAGS="--sysroot=$NDK_TOOLCHAIN/sysroot -I$NDK_TOOLCHAIN/sysroot/usr/include -I$NDK_TOOLCHAIN/include -I../include -L../lib " 
    export LDFLAGS="-L$NDK_TOOLCHAIN/sysroot/usr/lib -L$NDK_TOOLCHAIN/lib -L../lib" 
    
    
    export CC="$HOST-gcc -D__ANDROID_API__=16 " 
    
    export CXX="$HOST-g++ -D__ANDROID_API__=16 " 
    
    ./autogen.sh 
    
    ./configure --host=arm-linux-eabi --disable-asciidoc --prefix=$NDK_TOOLCHAIN --with-openssl-dir=../lib --enable-static-openssl --with-libevent-dir=../lib --enable-static-libevent 
    
    make 
    
    #some tests fail on compilation, but tor is built (in src/or/tor) and I confirm that it works on Android 6 
    
    cd .. 
    

    토르 (0.3.2.0 알파 DEV)은 패치를 사용하여 토 양파 프록시 라이브러리 개시로부터 로그 캣이다 (아래 참조)

    09-14 12:25:43.059 13520-13544/? I/c*.m*.t*.t*.c: Sep 14 12:25:43.058 [notice] Tor 0.3.2.0-alpha-dev (git-d71a00e91f3921f6) running on Linux with Libevent 2.0.23-stable, OpenSSL 1.1.0f, Zlib 1.2.8, Liblzma N/A, and Libzstd N/A. 
    
    09-14 12:25:43.060 13520-13544/? I/c*.m*.t*.t*.c: Sep 14 12:25:43.058 [notice] Tor can't help you if you use it wrong! Learn how to be safe at https://www.torproject.org/download/download#warning 
    
    09-14 12:25:43.060 13520-13544/? I/c*.m*.t*.t*.c: Sep 14 12:25:43.058 [notice] This version is not a stable Tor release. Expect more bugs than usual. 
    
    09-14 12:25:43.060 13520-13544/? I/c*.m*.t*.t*.c: Sep 14 12:25:43.059 [notice] Read configuration file "/data/user/0/rs.tlcadvancedtech.ultravpnandroidclient/app_torfiles/torrc". 
    
    09-14 12:25:43.080 13520-13544/? I/c*.m*.t*.t*.c: Sep 14 12:25:43.079 [notice] I think we have 8 CPUS, but only 2 of them are available. Telling Tor to only use 2. You can override this with the NumCPUs option 
    
    09-14 12:26:04.593 13520-13548/? I/c*.m*.t*.t*.d: message: severity: NOTICE, msg: Bootstrapped 53%: Loading relay descriptors 
    
    09-14 12:26:07.023 13520-13548/? I/c*.m*.t*.t*.d: message: severity: NOTICE, msg: Bootstrapped 59%: Loading relay descriptors 
    
    09-14 12:26:08.472 13520-13548/? I/c*.m*.t*.t*.d: message: severity: NOTICE, msg: Bootstrapped 67%: Loading relay descriptors 
    
    09-14 12:26:09.027 13520-13548/? I/c*.m*.t*.t*.d: message: severity: NOTICE, msg: Bootstrapped 72%: Loading relay descriptors 
    
    09-14 12:26:09.689 13520-13548/? I/c*.m*.t*.t*.d: message: severity: NOTICE, msg: Bootstrapped 78%: Loading relay descriptors 
    
    09-14 12:26:10.301 13520-13548/? I/c*.m*.t*.t*.d: message: severity: NOTICE, msg: Bootstrapped 80%: Connecting to the Tor network 
    
    09-14 12:26:11.633 13520-13548/? I/c*.m*.t*.t*.d: message: severity: NOTICE, msg: Bootstrapped 90%: Establishing a Tor circuit 
    
    09-14 12:26:14.637 13520-13548/? I/c*.m*.t*.t*.d: message: severity: NOTICE, msg: Tor has successfully opened a circuit. Looks like client functionality is working. 
    

    Tor Onion Proxy Library

    최신 tor 버전 (0.3.2.0 alpha-dev 작성시)을 사용하려면 torrc 구성 파일 가장 최근의 tor는 설정 파일 안의 상대 경로에서 더 엄격하기 때문에 Tor Onion Proxy Library에 의해 다르게 생성됩니다 (상대 파일 이름이 지정되면 tor가 종료됩니다).

    패치 된 Tor Onion Proxy Library는 here입니다.