如何在 iPhone 中编译 Eigen
Posted
技术标签:
【中文标题】如何在 iPhone 中编译 Eigen【英文标题】:How to compile Eigen in iPhone 【发布时间】:2011-09-17 08:38:23 【问题描述】:我想编译 Eigen 并在具有 NEON 功能的 iPhone 中使用它。 ?是否需要针对特定的 ARM 芯片进行编译?我需要修改构建脚本吗?
干杯。
【问题讨论】:
【参考方案1】:由于 ARM NEON 的显式矢量化在最新版本的 Eigen 中得到开箱即用的支持,我猜您根本不需要做任何特别的事情。手册中关于安装的部分内容如下:
要使用 Eigen,您只需要下载并提取 Eigen 的源代码(有关下载说明,请参阅 wiki)。事实上,Eigen 子目录中的头文件是使用 Eigen 编译程序所需的唯一文件。所有平台的头文件都相同。不需要使用 CMake 或安装任何东西。
总结:它是一个全头库。无需编译。
假设您设置了正确的工具链,您应该可以开始使用了。如果您使用的是受支持的编译器之一(我假设为 gcc),它应该自动检测要编译的优化(编辑:假设正确的编译器标志,例如 NEON 打开)。
至于如何为 iPhone 编译东西,好吧,关于这个话题我没有注意到 :D
【讨论】:
这不是那么简单 - Eigen 在不同的架构上使用各种技巧来实现矢量化。不确定这个技巧是否适用于 iPhone。 为什么不呢?使用受支持的编译器(例如 gcc)和正确的编译器标志(-mfpu=neon -mfloat-abi=softfp)应该自动检测 NEON 并使用显式 NEON 矢量化。它在常见问题解答中:eigen.tuxfamily.org/… 谢谢大家。我工作了几个小时,终于让它工作了。我使用xcode 4。需要在构建设置中使用armv7优化的arch,除此之外我需要按照Staffan所说的设置用户头搜索路径和编译标志。 我想不通的另一件事是,Eigen 头文件库有一些听者文件,而不使用 .h 扩展名。在 Xcode 4 中,我不能使用 #include 它们。我将这些文件修改为 .h 文件,它终于可以工作了。而且我必须在包含 Eigen 库之前定义 EIGEN_DONT_VECTORIZE。否则,它给了我 Command /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc-4.2 failed with exit code 1 compile error。 gcc 包含文件没有问题,无论扩展名如何(例如:iostream),因此应该可以修复(您的包含路径中的文件吗?等等)。 EIGEN_DONT_VECTORIZE 有点违背了目的,因为您不会以这种方式获得(显式)矢量化。也许你很幸运,编译器为你表演了一些魔法,谁知道:)以上是关于如何在 iPhone 中编译 Eigen的主要内容,如果未能解决你的问题,请参考以下文章
调用opencv时,使用Egien工具出现“error C2061: 语法错误: 标识符“Matrix””和“error C2653: “Eigen”:不是类或命名空间名称”该如何解决?
如何在 Eigen 中以 MarketIO 格式保存 Eigen::DiagonalMatrix?