天天看點

編譯可在Android上運作的依賴庫(五):pcre庫

編譯可在android上運作的依賴庫(五):pcre庫

作者:尋禹@阿裡聚安全

<b></b>

pcre版本:8.38。

本文在ubuntu 64位系統上對pcre項目進行交叉編譯。

下文中的"ndk"若無特殊說明均指"android ndk"。

下載下傳并安裝android ndk的過程在這裡不做介紹。

注意:這裡沒有也不需要“建立ndk工具的軟連結”這個步驟。

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=<b>"--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/"</b> ./configure --prefix=<b>"${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"</b>

為了保證交叉編譯成功,必須設定cpp、cxxcpp和cppflags這三個宏。下面是從configure.ac檔案(該檔案在pcre源碼中)中提取出來的對這三個宏的解釋:

    cpp:c preprocessor .................. : ${cpp}

    cxxcpp:c++ preprocessor ................ : ${cxxcpp}

    cppflags:c preprocessor flags ............ : ${cppflags}

cpp和cxxcpp指向的預處理器均來自ndk。

cppflags除了設定了--sysroot外,還設定了頭檔案的搜尋路徑。

ldflags設定了庫搜尋路徑,libs設定了依賴庫,這兩個宏也必須被設定。

阿裡聚安全由阿裡巴巴移動安全部出品,面向企業和開發者提供企業安全解決方案,全面覆寫移動安全、資料風控、内容安全、實人認證等次元,并在業界率先提出“以業務為中心的安全”,賦能生态,與行業共享阿裡巴巴集團多年沉澱的專業安全能力。

繼續閱讀