
我尝试使用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
这两个更改应该超过上面提到的错误:
set( ANDROID_NDK_HOST_SYstem_name "linux-x86" ) # line 468
应该
set( ANDROID_NDK_HOST_SYstem_name "linux-x86_64" )
这将产生另一个错误,除非您更改以下行(第1023行)
if( ANDROID_NDK_RELEASE STRGREATER "r8" ) # r8b
应该
if( ANDROID_NDK_RELEASE STRGREATER "r10" ) # r8b
第一个更改将_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
编辑第99-102行:
# define pcl_isnan(x) isnan(x)# define pcl_isfinite(x) isfinite(x)# define pcl_isinf(x) isinf(x)
他们应该是:
# define pcl_isnan(x) std::isnan(x)# define pcl_isfinite(x) std::isfinite(x)# define pcl_isinf(x) std::isinf(x)
PCL仍然会产生很多警告,但至少它会编译(到目前为止)
**编辑:**
这不会让你一直(不幸的是)因为升级库与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
(第一次运行make时会创建此目录).
接下来,修改
PCL-superbuild / CMakeExternals /来源/升压/的CMakeLists.txt
并找到该行:
@R_301_6852@(GLOB lib_srcs ${boost_root} / libs / @R_301_6852@system / v2 / src / * .cpp)
用它替换它
文件(GLOB lib_srcs ${boost_root} / libs / @R_301_6852@system / src / * .cpp)
就我而言,这就是我的意思
总结以上是内存溢出为你收集整理的为Android构建PCL全部内容,希望文章能够帮你解决为Android构建PCL所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)