@(Android研究)[android|pcre]linux
[TOC]android
本文公開首發於阿里聚安全博客:https://jaq.alibaba.com/community/index.htm?spm=0.0.0.0.ycEUXKc++
pcre版本:8.38。shell
本文在Ubuntu 64位系統上對pcre項目進行交叉編譯。安全
下文中的"NDK"若無特殊說明均指"Android NDK"。ide
下載並安裝Android NDK的過程在這裏不作介紹。工具
到pcre的官網去下載這個庫的源碼。官網地址:http://pcre.org/ui
請參考編譯可在Android上運行的glib庫中相應的步驟。idea
注意:這裏沒有也不須要「建立NDK工具的軟連接」這個步驟。.net
CPP=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-cpp CXXCPP=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/bin/arm-linux-androideabi-cpp CPPFLAGS="--sysroot $SYSROOT -I$NDK/sources/cxx-stl/gnu-libstdc++/4.9/include -I$NDK/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi/include -L$NDK/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi/" ./configure --prefix="${SYSROOT}/usr" --host=arm-linux-androideabi CFLAGS="--sysroot $SYSROOT" CXXFLAGS="--sysroot $SYSROOT" LDFLAGS="-L$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/linux-x86_64/lib/gcc/arm-linux-androideabi/4.9/ -L$NDK/sources/cxx-stl/gnu-libstdc++/4.9/libs/armeabi/ -L$SYSROOT/usr/lib/" LIBS="-lgnustl_static"
爲了保證交叉編譯成功,必須設置CPP、CXXCPP和CPPFLAGS這三個宏。下面是從configure.ac文件(該文件在pcre源碼中)中提取出來的對這三個宏的解釋:
CPP和CXXCPP指向的預處理器均來自NDK。
CPPFLAGS除了設置了--sysroot外,還設置了頭文件的搜索路徑。
LDFLAGS設置了庫搜索路徑,LIBS設置了依賴庫,這兩個宏也必須被設置。
對./configure命令中的其餘部分解析請參考編譯可在Android上運行的libiconv庫中的相應步驟。
請參考編譯可在Android上運行的libiconv庫中的相應步驟。