mar*_*duk 3 android android-ndk point-cloud-library
有没有人有关于为Android构建Point Cloud Library(PCL)的说明?我找到了一些声称可以构建PCL及其依赖项的PCL超级构建.我从http://www.hirotakaster.com/weblog/how-to-build-pcl-for-android-memo/尝试了超级构建.我使用的是Ubuntu 14.10,Android 19,NDK r10d和PCL 1.6.0,但我愿意使用任何版本.我也在使用终端进行编译.对于Android硬件,我使用的是Project Tango.
我尝试使用android-cmake(http://code.google.com/p/android-cmake/),但我不确定如何构建正确的工具链.我不断收到错误"在NDK中找不到任何有效的工具链.可能你的Android NDK坏了." 我也用普通的cmake和ccmake得到了这个错误.
有没有人有任何关于为Android构建PCL的详细说明(例如,bash脚本或终端说明)?或者,是否有人有预建库的链接?
(Caveat Emptor:这不是长期解决方案)
我能够通过编辑cmake文件来解决CMAKE错误
pcl-superbuild/toolchains/toolchain-android.cmake
Run Code Online (Sandbox Code Playgroud)
这两个更改应该超过上面提到的错误:
set( ANDROID_NDK_HOST_SYSTEM_NAME "linux-x86" ) # Line 468
Run Code Online (Sandbox Code Playgroud)
应该
set( ANDROID_NDK_HOST_SYSTEM_NAME "linux-x86_64" )
Run Code Online (Sandbox Code Playgroud)
这将产生另一个错误,除非您更改以下行(第1023行)
if( ANDROID_NDK_RELEASE STRGREATER "r8" ) # r8b
Run Code Online (Sandbox Code Playgroud)
应该
if( ANDROID_NDK_RELEASE STRGREATER "r10" ) # r8b
Run Code Online (Sandbox Code Playgroud)
第一个更改将_64添加到x86_64.第二个增加了r10d的兼容性.
但这并不能解决所有错误,因为BOOST线程与GCC 4.6+不能很好地配合.实现此链接中显示的补丁(https://svn.boost.org/trac/boost/ticket/6165).
同样,这仍然无法解决所有错误.(我还没弄清楚为什么还需要这个,math.h不应该需要std::).在文件中,
pcl-superbuild/CMakeExternals/Source/pcl/common/include/pcl/pcl_macros.h
Run Code Online (Sandbox Code Playgroud)
编辑第99-102行:
# define pcl_isnan(x) isnan(x)
# define pcl_isfinite(x) isfinite(x)
# define pcl_isinf(x) isinf(x)
Run Code Online (Sandbox Code Playgroud)
他们应该是:
# define pcl_isnan(x) std::isnan(x)
# define pcl_isfinite(x) std::isfinite(x)
# define pcl_isinf(x) std::isinf(x)
Run Code Online (Sandbox Code Playgroud)
PCL仍然会产生很多警告,但至少它会编译(到目前为止)
**编辑:**
这不会让你一直(不幸的是)因为boost库与C++ 11不兼容.
要解决此问题,请从http://sourceforge.net/projects/boost/files/boost/1.55.0/下载boost 1.55 ,并覆盖 boost目录
pcl-superbuild/CMakeExternals/Source/boost/boost_1_45_0
Run Code Online (Sandbox Code Playgroud)
(第一次运行make时会创建此目录).
接下来,修改
PCL-superbuild/CMakeExternals /来源/升压/的CMakeLists.txt
并找到该行:
file(GLOB lib_srcs $ {boost_root}/libs/filesystem/v2/src/*.cpp)
用它替换它
文件(GLOB lib_srcs $ {boost_root}/libs/filesystem/src/*.cpp)
就我而言,这就是我的意思
| 归档时间: |
|
| 查看次数: |
3472 次 |
| 最近记录: |