Macos flatter(用于快速LLL)本地编译安装(解决安装过程各种疑难杂症)

这篇具有很好参考价值的文章主要介绍了Macos flatter(用于快速LLL)本地编译安装(解决安装过程各种疑难杂症)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

flatter是一个开源项目,能大大提高LLL的速度,项目提供的安装文档适用于Ubuntu,但是在macos上安装,总会遇到各种各样的问题,这里记录下所踩坑,帮助大家快速在macos上安装flatter。



各种报错的解决全部掺杂在小步骤里面了,如果按照步骤来,仍有报错,欢迎在评论区讨论。

1.安装依赖库(特别注意fplll使用5.4.2版本)

正确步骤1:clone flatter项目。

git clone https://github.com/keeganryan/flatter.git

正确步骤2:首先安装如下依赖,这里和项目文档有些出入,这些都是踩坑的教训。

brew install gmp mpfr eigen llvm libomp

正确步骤3:安装fplll的5.4.2版本,参考博客:HomeBrew安装历史版本依赖库(formula)-4.0以后版本通用(以brew安装fplll5.4.2为例)

然后fplll不能直接安装,直接安装的话,默认安装的是新版,新版有不兼容问题,在make的时候会报如下错误:

/opt/homebrew/include/fplll/gso.h:233:16: error: 'fplll::MatGSO<fplll::Z_NR<>, fplll::FP_NR<>>::babai' hides overloaded virtual functions [-Werror,-Woverloaded-virtual]
  void virtual babai(vector<ZT> &w, const vector<FT> &v, int start = 0, int dimension = -1,
               ^
/opt/homebrew/include/fplll/gso_interface.h:466:16: note: hidden overloaded virtual function 'fplll::MatGSOInterface<fplll::Z_NR<>, fplll::FP_NR<>>::babai' declared here: different number of parameters (3 vs 5)
  void virtual babai(vector<ZT> &v, int start = 0, int dimension = -1);
               ^
/opt/homebrew/include/fplll/gso_interface.h:477:16: note: hidden overloaded virtual function 'fplll::MatGSOInterface<fplll::Z_NR<>, fplll::FP_NR<>>::babai' declared here: different number of parameters (4 vs 5)
  void virtual babai(vector<ZT> &w, const vector<FT> &v, int start = 0, int dimension = 1);
               ^
2 errors generated.
make[2]: *** [src/CMakeFiles/flatter.dir/problems/lattice_reduction/fplll_impl.cpp.o] Error 1
make[1]: *** [src/CMakeFiles/flatter.dir/all] Error 2
make: *** [all] Error 2

这个错误的解决办法,就是使用低版本的fplll库,这里使用5.4.2,保证不会有问题。

2.修改CMakeLists.txt文件

安装完依赖后,不能直接cmake,这样的话,会遇到如下的报错:

atfwus@***MacBook-Pro build % cmake ..
CMake Error at /opt/homebrew/Cellar/cmake/3.27.7/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:230 (message):
  Could NOT find OpenMP_CXX (missing: OpenMP_CXX_FLAGS OpenMP_CXX_LIB_NAMES)
Call Stack (most recent call first):
  /opt/homebrew/Cellar/cmake/3.27.7/share/cmake/Modules/FindPackageHandleStandardArgs.cmake:600 (_FPHSA_FAILURE_MESSAGE)
  /opt/homebrew/Cellar/cmake/3.27.7/share/cmake/Modules/FindOpenMP.cmake:577 (find_package_handle_standard_args)
  src/CMakeLists.txt:8 (find_package)

正确步骤4:我们需要在CMakeLists.txt文件中显式指定OpenMP路径:

set(OpenMP_CXX_FLAGS "-Xpreprocessor -fopenmp -I/opt/homebrew/opt/libomp/include")
set(OpenMP_CXX_LIB_NAMES "omp")
set(OpenMP_omp_LIBRARY "/opt/homebrew/opt/libomp/lib/libomp.a")
set(OpenMP_CXX_VERSION 3.1)

特别注意这几行添加的位置,是位于flatter-main/CMakeLists.txt中的这个位置,添加错位置了也会出问题:
Macos flatter(用于快速LLL)本地编译安装(解决安装过程各种疑难杂症),工具与开发环境问题,flatter,LLL,编译安装flatter,CMakeError
正确步骤5:然后还需要指定mpfr和gmp的依赖位置:

include_directories(/opt/homebrew/opt/mpfr/include)
include_directories(/opt/homebrew/opt/gmp/include)
link_directories(/opt/homebrew/opt/mpfr/lib)
link_directories(/opt/homebrew/opt/gmp/lib)

如果这里没指定,那么在make的时候会遇到如下的错误:

[ 98%] Building CXX object apps/CMakeFiles/flatter_bin.dir/flatter.cpp.o
In file included from /Users/atfwus/open_proj/flatter-main/apps/flatter.cpp:2:
In file included from /Users/atfwus/open_proj/flatter-main/./include/flatter/data/matrix.h:1:
/Users/atfwus/open_proj/flatter-main/./include/flatter/data/matrix/matrix.h:3:10: fatal error: 'mpfr.h' file not found
#include <mpfr.h>
         ^~~~~~~~
1 error generated.
make[2]: *** [apps/CMakeFiles/flatter_bin.dir/flatter.cpp.o] Error 1
make[1]: *** [apps/CMakeFiles/flatter_bin.dir/all] Error 2

3.编译

正确步骤6:编译

mkdir build && cd ./build
cmake ..
make
sudo make install
sudo update_dyld_shared_cache

如果上面的步骤都做到了的话,这几步都不会出现问题,如果出现了问题,去上面步骤里面找报错信息。

正确步骤7:设置环境变量DYLD_LIBRARY_PATH
进入lib目录,查看当前路径,例如:/Users/atfwus/open_proj/flatter-main/build/lib

编辑~/.zprofile文件(依据你使用的shell不同而不同,有的是.bashrc),将其添加到末尾:

# flatter DYLD
export DYLD_LIBRARY_PATH=/Users/atfwus/open_proj/flatter-main/build/lib:$DYLD_LIBRARY_PATH
source .zprofile

这个步骤也可以换成:

install_name_tool -change @rpath/libflatter.dylib /Users/atfwus/open_proj/flatter-main/build/lib/libflatter.dylib /usr/local/bin/flatter

这样就成功安装flatter了,可以检验是否安装成功:

atfwus@xxxMacBook-Pro build % latticegen q 4 2 10 b | flatter
[[4 -1 1 0]
[2 10 8 2]
[1 4 -5 -13]
[4 4 -12 12]
]

如果第7步出现了问题,那么运行上述命令的时候,会有如下报错:

atfwus@xxxMacBook-Pro ~ % flatter
dyld[91789]: Library not loaded: @rpath/libflatter.dylib
  Referenced from: <945BAD71-AAEC-35CD-AA40-C43693D76181> /usr/local/bin/flatter
  Reason: no LC_RPATH's found
zsh: abort      flatter

ATFWUS 2024-01-18文章来源地址https://www.toymoban.com/news/detail-805084.html

到了这里,关于Macos flatter(用于快速LLL)本地编译安装(解决安装过程各种疑难杂症)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MACOS Ventura 本地安装HDFS 3.1.4

    1、终端,输入第一条命令一直回车即可,然后将生成的将公钥内容写入到 ~/.ssh/authorized_keys 中 2、系统登录-共享-远程登录,打开。如下: 3、官网下载安装包并且解压: Apache Hadoop  4、修改 core-site.xml 5、修改 hdfs-site.xml 6、修改 yarn-site.xml 7、修改 mapred-site.xml 8、配置环境变

    2024年02月07日
    浏览(42)
  • flutter开发实战-build编译macos环境可安装dmg

    flutter开发实战-build编译macos环境可安装dmg 之前开发中需要变异Macos成dmg的需求,这里记录一下build编译macos环境可安装dmg的过程。 目录如下 如果工程没有macos,需要增加macos支持的平台。命令 运行macos无法访问http请求 可以在macos目录runner文件夹中 DebugProfile.entitlements和 Release

    2024年02月16日
    浏览(46)
  • yum命令详解,配置本地yum源,编译安装

    Yum(全称为 Yellow dogUpdater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某

    2024年02月15日
    浏览(47)
  • 记LGSVL Map Annotation(1) LGSVL本地编译记录、安装

    主要的编译参考来着官方文件 安装unity hub 安装2020.3.3f1在unity hub上 但是我发现没有2020.3.3f1,只有2020.3.3f1c1,其实c1就是中国版,没有什么影响 安装GIT 安装Git LFS 验证git-lfs(输出Git LFS initialized就🆗了) 官方: 打开终端并导航到要将模拟器下载到的位置 如果你想模拟器在你的

    2024年02月09日
    浏览(32)
  • MacOS安装openMP报错【已解决】

    error: Target “WLBG” links to: OpenMP::OpenMP_CXX but the target was not found. Possible reasons include: * There is a typo in the target name. * A find_package call is missing for an IMPORTED target. * An ALIAS target is missing. 最开始是报这个错,我以为是cmakeLists出错了,target_link_libraries里面加了 OpenMP::OpenMP_CXX 。但是我照

    2024年04月14日
    浏览(31)
  • 解决重新安装macOS时-2004F错误

    最近Finder被自己玩坏了,原因是安装了winzip之后,卸载了winzip,zip文件的图标恢复不了。自己好像不是第一次被winzip坑了。 想到了重新安装macOS来恢复系统的方法,但是通过Option+Command+R连接网络重新安装macOS BigSur的时候,在第一次走进度条,还剩几分钟的时候,报告了下面这

    2024年02月11日
    浏览(42)
  • MacOS系统 安装ZooKeeper 和常见问题解决

    ZooKeeper 是一个分布式的开源协调服务,用于构建分布式应用程序。 使用 Homebrew 安装,如果没有的话,强烈推荐 Homebrew,安装命令参考如下: 安装 ZooKeeper: 启动 ZooKeeper 服务: 停止 ZooKeeper 服务 : 测试 ZooKeeper 是否正常启动 : 2.1 配置文件在哪? 使用 Homebrew 安装,一般会

    2024年01月18日
    浏览(48)
  • 搭建虚拟机Macos及安装XCode(问题解决)

    前言:安装Mac虚拟机的过程中遇到了一系列的问题,接下来将按照安装流程阐述每个步骤中所遇难题及相应的解决方法(电脑系统是Win11)。 1. 下载安装所需文件,安装并解锁unlocker 首先按照教程技能 | Win10系统安装苹果Mac虚拟机 - 知乎下载了相应文件( 先别下!!! ),包

    2024年02月07日
    浏览(50)
  • 解决 vmware 虚拟机无法安装 macos13.1

    win11 专业版 VMware workstation 17 pro macos13.1 ios镜像 unlocker 4.2.5 新建虚拟机的时候可以看到没有选择macos系统的那一项 所以需要使用 unlocker 软件来进行解锁,下载地址:https://github.com/DrDonk/unlocker/releases 找到最新版本压缩包下载,当前最新版本是4.2.5 解压出来,然后把 iso 文件夹中

    2024年02月12日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包