工作原因需要在android配置pcl库,网上搜了一圈,这方面的文章比较少,主要参考https://blog.csdn.net/hehehetanchaow/article/details/81033791
其中在编译时遇到不少坑,记录下
step 1 ,配置cmake
$ sudo apt-get install git make cmake
step2
sudo dnf install git make cmake
本机没有效果
step3 交叉编译
-
$ git clone https://github.com/bashbug/pcl-for-android.git 下载pcl编译文
-
$ export ANDROID_NDK=PATH_TO_YOUR_LOCAL_ANDROID_NDK_FOLDER 配置ndk环境 没有用到这步
本人下载android-ndk-r14b-linux-x86_64直接在环境变量里添加ndk路径export PYTHONPATH=/home/xuhw/caffe/python:$PYTHONPATH
export NDK_HOME=/home/xuhw//android-ndk-r14b-linux-x86_64/android-ndk-r14b
export ANDROID_NDK=/home/xuhw//android-ndk-r14b-linux-x86_64/android-ndk-r14b
export PATH=$PATH:$NDK_HOME
export PATH=$PATH:$ANDROID_ND 在命令行敲击 gedit ~/.bashrc 在bashrc最后添加上面的环境 再敲击 source ~/.bashrc 使环境变量生效 -
./download-setup.sh 下载必要的第三方库 flann boost
-
./pcl-build-for-android.sh 此步错误较多
-
首先修改pcl-build-for-android.sh文件28行根据android.toolchain.cmake文件所在相对路径修改中ANDROIDTOOLCHAIN=${ROOT}/../android.toolchain.cmake
-
在android.toolchain.cmake中 添加set(CMAKE_MAKE_PROGRAM "" make "")
set(PKG_CONFIG_EXECUTABLE "/usr/bin/pkg-config")
set( HAVE_POSIX_MEMALIGN_EXITCODE
"PLEASE_FILL_OUT-FAILED_TO_RUN"
CACHE STRING "Result from TRY_RUN" FORCE) -
在pcl-build-for-android.sh 中pcl编译cmake . -DCMAKE_BUILD_TYPE:STRING=Release \
-DCMAKE_INSTALL_PREFIX=${ROOT}/pcl-android \
-DCMAKE_TOOLCHAIN_FILE:FILEPATH=$ANDROIDTOOLCHAIN \
-DBUILD_SHARED_LIBS:BOOL=OFF \
-DPCL_SHARED_LIBS:BOOL=OFF \
-DBUILD_visualization:BOOL=OFF \
-DBUILD_examples:BOOL=OFF \
-DEIGEN_INCLUDE_DIR:PATH=${EIGEN_INCLUDE_DIR} \
-DFLANN_INCLUDE_DIR:PATH=${FLANN_INCLUDE_DIR} \
-DFLANN_LIBRARY:FILEPATH=${FLANN_LIBRARY}/libflann_cpp_s.a \
-DBOOST_ROOT:PATH=${BOOST_ROOT} \
-DBoost_INCLUDE_DIR:PATH=${Boost_INCLUDE_DIRS} \
-DWITH_VTK:BOOL=OFF \
-DWITH_QHULL:BOOL=OFF \
-DWITH_PCAP:BOOL=OFF \
-DWITH_PNG:BOOL=OFF \
-DWITH_OPENGL:BOOL=OFF \
-DWITH_LIBUSB:BOOL=OFF \
-DBoost_DATE_TIME_LIBRARY=${Boost_LIBRARIES}/libboost_date_time.a \
-DBoost_DATE_TIME_LIBRARY_DEBUG=${Boost_LIBRARIES}/libboost_date_time.a \
-DBoost_DATE_TIME_LIBRARY_RELEASE=${Boost_LIBRARIES}/libboost_date_time.a \
-DBoost_FILESYSTEM_LIBRARY=${Boost_LIBRARIES}/libboost_filesystem.a \
-DBoost_FILESYSTEM_LIBRARY_DEBUG=${Boost_LIBRARIES}/libboost_filesystem.a \
-DBoost_FILESYSTEM_LIBRARY_RELEASE=${Boost_LIBRARIES}/libboost_filesystem.a \
-DBoost_IOSTREAMS_LIBRARY=${Boost_LIBRARIES}/libboost_iostreams.a \
-DBoost_IOSTREAMS_LIBRARY_DEBUG=${Boost_LIBRARIES}/libboost_iostreams.a \
-DBoost_IOSTREAMS_LIBRARY_RELEASE=${Boost_LIBRARIES}/libboost_iostreams.a \
-DBoost_SYSTEM_LIBRARY=${Boost_LIBRARIES}/libboost_system.a \
-DBoost_SYSTEM_LIBRARY_DEBUG=${Boost_LIBRARIES}/libboost_system.a \
-DBoost_SYSTEM_LIBRARY_RELEASE=${Boost_LIBRARIES}/libboost_system.a \
-DBoost_THREAD_LIBRARY=${Boost_LIBRARIES}/libboost_thread.a \
-DBoost_THREAD_LIBRARY_DEBUGBoost_INCLUDE_DIRS=${Boost_LIBRARIES}/libboost_thread.a \
-DBoost_THREAD_LIBRARY_RELEASE=${Boost_LIBRARIES}/libboost_thread.a \
-DBoost_LIBRARY_DIRS=${Boost_LIBRARIES} \
-DCMAKE_MAKE_PROGRAM=make 添加标红的选项 -
同样在pcl-build-for-android.sh 中flann编译 -DCMAKE_TOOLCHAIN_FILE:FILEPATH=$ANDROIDTOOLCHAIN \
-DBUILD_EXAMPLES:BOOL=OFF \
-DBUILD_PYTHON_BINDINGS:BOOL=OFF \
-DBUILD_MATLAB_BINDINGS:BOOL=OFF \
-DCMAKE_MAKE_PROGRAM=make 添加标红的选项