libwebsocket的交叉编译android ndk
ndk版本
android-ndk-r17
libwebsocket版本
git clone https://github.com/warmcat/libwebsockets.git -b v2.3-stable
编译脚本
#!/bin/bash
rm -rf CMakeCache.txt
rm -rf CMakeFiles
rm -rf cmake_install.cmake
rm -rf Makefile
rm -rf CTestTestfile.cmake
export ANDROID_NDK_HOME="/home/public/lingxu/android-ndk-r17-beta2"
if [[ “$@“ =~ "-d" ]];then
echo "----------------------------cmake debug----------------------------"
cmake -DDEBUG=ON -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake \
-DANDROID_NDK=$ANDROID_NDK_HOME \
-DANDROID_ABI=armeabi-v7a \
-DANDROID_TOOLCHAIN=gcc \
-DANDROID_PLATFORM=android-17 \
-DANDROID_STL=c++_shared \
-DLWS_WITHOUT_DAEMONIZE=ON \
-DLWS_WITHOUT_TESTAPPS=ON \
-DLWS_IPV6=OFF \
-DLWS_WITH_BUNDLED_ZLIB=OFF \
-DLWS_WITH_SSL=ON \
-DLWS_WITH_HTTP2=ON \
-DLWS_OPENSSL_INCLUDE_DIRS=../openssl/include \
-DLWS_OPENSSL_LIBRARIES="../openssl/lib/libssl.a;../openssl/lib/libcrypto.a" \
.
else
echo "----------------------------cmake release----------------------------"
cmake -DDEBUG=NO -DCMAKE_TOOLCHAIN_FILE=$ANDROID_NDK_HOME/build/cmake/android.toolchain.cmake \
-DANDROID_NDK=$ANDROID_NDK_HOME \
-DANDROID_ABI=armeabi-v7a \
-DANDROID_TOOLCHAIN=gcc \
-DANDROID_PLATFORM=android-17 \
-DANDROID_STL=c++_shared \
-DLWS_WITHOUT_DAEMONIZE=ON \
-DLWS_WITHOUT_TESTAPPS=ON \
-DLWS_IPV6=OFF \
-DLWS_WITH_BUNDLED_ZLIB=OFF \
-DLWS_WITH_SSL=ON \
-DLWS_WITH_HTTP2=ON \
-DLWS_OPENSSL_INCLUDE_DIRS="/home/kuili/linux_tingjian/android/linux/case/apps/wpa_cli/openssl/include" \
-DLWS_OPENSSL_LIBRARIES="/home/kuili/linux_tingjian/android/linux/case/images/rootfs/lib/libssl.so;/home/kuili/linux_tingjian/android/linux/case/images/rootfs/lib/libcrypto.so" \
.
fi
make
rm -rf CMakeCache.txt
rm -rf CMakeFiles
rm -rf cmake_install.cmake
rm -rf Makefile
rm -rf CTestTestfile.cmake
验证
编译产物为libwebsocket.a和libwebsocket.so库,注意根据自带的测试代码验证编译的库是否正常运行在目标设备上