当前位置:   article > 正文

交叉编译-9:跨平台交叉编译libevhtp库(Android、iOS)_libevhtp编译

libevhtp编译

一、Android平台

     1. 进入网址https://repology.org/metapackage/libevhtp/versions,下载libevhtp压缩包。

     2. 解压进入libevhtp-1.2.16目录,在当前目录下创建文件夹openssl,将openssl的头文件以及库分别拷贝openssl /include到和openssl/lib目录下,并将openssl的头文件拷贝到include目录下。

     3. 在当前目录下创建文件夹libevent,将libevent的头文件以及库分别拷贝libevent/include到和libevent/lib目录下。

     4. 修改CMakeLists.txt,注释掉196行的list (APPEND LIBEVHTP_EXTERNAL_LIBS pthread),因为Android平台的pthread库在c库里了,不需要额外链接。

     5.进入build目录,新建ShellScript脚本。    

  1. #!/bin/bash
  2. rm -rf CMakeCache.txt
  3. rm -rf CMakeFiles
  4. rm -rf cmake_install.cmake
  5. rm -rf Makefile
  6. rm -rf CTestTestfile.cmake
  7. if [[ “$@“ =~ "-d" ]];then
  8. echo "----------------------------cmake debug----------------------------"
  9. cmake -DDEBUG=ON -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake \
  10. -DANDROID_NDK=$ANDROID_NDK_HOME \
  11. -DANDROID_ABI=armeabi-v7a \
  12. -DANDROID_TOOLCHAIN=clang \
  13. -DANDROID_PLATFORM=android-21 \
  14. -DANDROID_STL=c++_shared \
  15. -DEVHTP_BUILD_SHARED=ON \
  16. -DLIBEVENT_INCLUDE_DIR=../libevent/include \
  17. -DLIBEVENT_LIBRARY=../libevent/lib/libevent.a \
  18. -DLIBEVENT_CORE=../libevent/lib/libevent_core.a \
  19. -DLIBEVENT_EXTRA=../libevent/lib/libevent_extra.a \
  20. -DLIBEVENT_THREAD=../libevent/lib/libevent_pthreads.a \
  21. -DLIBEVENT_SSL=../libevent/lib/libevent_openssl.a \
  22. -DOPENSSL_INCLUDE_DIR=../openssl/include \
  23. -DOPENSSL_CRYPTO_LIBRARY=../openssl/lib/libcrypto.a \
  24. -DOPENSSL_SSL_LIBRARY=../openssl/lib/libssl.a \
  25. ..
  26. else
  27. echo "----------------------------cmake release----------------------------"
  28. cmake -DDEBUG=NO -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake \
  29. -DANDROID_NDK=$ANDROID_NDK_HOME \
  30. -DANDROID_ABI=armeabi-v7a \
  31. -DANDROID_TOOLCHAIN=clang \
  32. -DANDROID_PLATFORM=android-21 \
  33. -DANDROID_STL=c++_shared \
  34. -DEVHTP_BUILD_SHARED=ON \
  35. -DLIBEVENT_INCLUDE_DIR=../libevent/include \
  36. -DLIBEVENT_LIBRARY=../libevent/lib/libevent.a \
  37. -DLIBEVENT_CORE=../libevent/lib/libevent_core.a \
  38. -DLIBEVENT_EXTRA=../libevent/lib/libevent_extra.a \
  39. -DLIBEVENT_THREAD=../libevent/lib/libevent_pthreads.a \
  40. -DLIBEVENT_SSL=../libevent/lib/libevent_openssl.a \
  41. -DOPENSSL_INCLUDE_DIR=../openssl/include \
  42. -DOPENSSL_CRYPTO_LIBRARY=../openssl/lib/libcrypto.a \
  43. -DOPENSSL_SSL_LIBRARY=../openssl/lib/libssl.a \
  44. ..
  45. fi
  46. make
  47. rm -rf CMakeCache.txt
  48. rm -rf CMakeFiles
  49. rm -rf cmake_install.cmake
  50. rm -rf Makefile
  51. rm -rf CTestTestfile.cmake

     5.使用chmod +x ShellScript给ShellScript脚本赋予执行权限。

     6. ./ShellScript

 

一、iOS平台

     1. 进入网址https://repology.org/metapackage/libevhtp/versions,下载libevhtp压缩包。

     2. 解压进入libevhtp-1.2.16目录,在当前目录下创建文件夹openssl,将openssl的头文件以及库分别拷贝openssl /include到和openssl/lib目录下,并将openssl的头文件拷贝到include目录下。

     3. 在当前目录下创建文件夹libevent,将libevent的头文件以及库分别拷贝libevent/include到和libevent/lib目录下。

     4. 修改CMakeLists.txt,增加两行。

  1. SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fobjc-abi-version=2 -fobjc-arc -std=gnu++11 -stdlib=libc++ -isysroot ${CMAKE_OSX_SYSROOT}")
  2. SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fobjc-abi-version=2 -fobjc-arc -isysroot ${CMAKE_OSX_SYSROOT}")

     5.进入build目录,新建ShellScript脚本。     

  1. #!/bin/bash
  2. rm -rf CMakeCache.txt
  3. rm -rf CMakeFiles
  4. rm -rf cmake_install.cmake
  5. rm -rf Makefile
  6. rm -rf CTestTestfile.cmake
  7. if [ “$@“ =~ "-d" ];then
  8. echo "----------------------------cmake debug----------------------------"
  9. cmake -DDEBUG=ON -DCMAKE_TOOLCHAIN_FILE=./toolchain/iOS.cmake -DIOS_PLATFORM=OS -DBUILD_ARM64=1 \
  10. -DEVHTP_BUILD_SHARED=OFF \
  11. -DCMAKE_SIZEOF_VOID_P=8 \
  12. -DLIBEVENT_INCLUDE_DIR=../libevent/include \
  13. -DLIBEVENT_LIBRARY=../libevent/lib/libevent.a \
  14. -DLIBEVENT_CORE=../libevent/lib/libevent_core.a \
  15. -DLIBEVENT_EXTRA=../libevent/lib/libevent_extra.a \
  16. -DLIBEVENT_THREAD=../libevent/lib/libevent_pthreads.a \
  17. -DLIBEVENT_SSL=../libevent/lib/libevent_openssl.a \
  18. -DOPENSSL_INCLUDE_DIR=../openssl/include \
  19. -DOPENSSL_CRYPTO_LIBRARY=../openssl/lib/libcrypto.a \
  20. -DOPENSSL_SSL_LIBRARY=../openssl/lib/libssl.a \
  21. ..
  22. else
  23. echo "----------------------------cmake release----------------------------"
  24. cmake -DDEBUG=NO -DCMAKE_TOOLCHAIN_FILE=./toolchain/iOS.cmake -DIOS_PLATFORM=OS -DBUILD_ARM64=1 \
  25. -DEVHTP_BUILD_SHARED=OFF \
  26. -DCMAKE_SIZEOF_VOID_P=8 \
  27. -DLIBEVENT_INCLUDE_DIR=../libevent/include \
  28. -DLIBEVENT_LIBRARY=../libevent/lib/libevent.a \
  29. -DLIBEVENT_CORE=../libevent/lib/libevent_core.a \
  30. -DLIBEVENT_EXTRA=../libevent/lib/libevent_extra.a \
  31. -DLIBEVENT_THREAD=../libevent/lib/libevent_pthreads.a \
  32. -DLIBEVENT_SSL=../libevent/lib/libevent_openssl.a \
  33. -DOPENSSL_INCLUDE_DIR=../openssl/include \
  34. -DOPENSSL_CRYPTO_LIBRARY=../openssl/lib/libcrypto.a \
  35. -DOPENSSL_SSL_LIBRARY=../openssl/lib/libssl.a \
  36. ..
  37. fi
  38. make
  39. rm -rf CMakeCache.txt
  40. rm -rf CMakeFiles
  41. rm -rf cmake_install.cmake
  42. rm -rf Makefile
  43. rm -rf CTestTestfile.cmake

6.下载iOS cmake交叉编译链,下载链接:https://download.csdn.net/download/zhuyunier/10273702。解压压缩包到build目录下,进入build目录,执行ShellScript脚本。   

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/742815
推荐阅读
相关标签
  

闽ICP备14008679号