在redhat6.4上编译z3求解器
因为项目需要,我们使用到了微软的z3求解器求约束,但是z3求解器在红帽平台上并没有发布编译好的二进制版本,而我们的运行环境是红帽的企业版6.4,因此需要自己编译相应的二进制。
z3是由微软公司开发的一个优秀的SMT求解器(也就定理证明器),它能够检查逻辑表达式的可满足性。目前的最新版本是4.4.1,github主页。
从z3主页上面下载最新的代码
git clone git@github.com:Z3Prover/z3.git
切换工作目录到z3下执行
python ./scripts/mk_make.py
报告如下的错误
Traceback (most recent call last):
File "./scripts/mk_make.py", line , in <module>
update_version()
File "/home/ace/z3/scripts/mk_util.py", line , in update_version
mk_version_dot_h(major, minor, build, revision)
File "/home/ace/z3/scripts/mk_util.py", line , in mk_version_dot_h
'Z3_FULL_VERSION': get_full_version_string(major, minor, build, revision)
File "/home/ace/z3/scripts/mk_util.py", line , in configure_file
print("Generating {} from {}".format(output_file_path, template_file_path))
ValueError: zero length field name in format
这错误实在是不好定位,第一个念头是不是和python版本有关系,当时还不太确定,上谷歌一通搜索,终于在这里找到了一个貌似有点相关的bugfix。
Fix build error introduced with commit 1c5a57a "glapi/es3.1: Add support
for GLES versions > 3.0" with Python < 2.7. File "src/mapi/glapi/gen/gl_genexec.py", line , in <module>
printer.Print(api)
File "src/mapi/glapi/gen/gl_XML.py", line , in Print
self.printBody(api)
File "src/mapi/glapi/gen/gl_genexec.py", line , in printBody
condition_parts.append('(ctx->API == API_OPENGLES2 && ctx->Version >= {})'.format(int(f.api_map['es2'] * )))
ValueError: zero length field name in format
如此确定应该是和python版本相关,所以着手升级红帽的python版本,红帽6.4默认带的python版本是2.6.6,升级过程参考了linux公社上的一篇文章。
将python升级到2.7.6之后再次运行
python ./scripts/mk_make.py
还是报错
UnicodeEncodeError: 'ascii' codec can't encode character u'\xa9' in position
不过这次的错误比较容易理解,解决方案也比较简单,在 scripts/mk_util.py文件头添加
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
指定文件字符集为utf-8。
之后再运行
python scripts/mk_make.py
顺利通过编译配置,然后按照官网上面的指导
cd build make sudo make install
顺利编译成功,输入测试文件得到了预期的结果。
参考:
https://github.com/Z3Prover/z3
http://code.metager.de/source/history/freedesktop/mesa/mesa/src/mapi/
http://www.linuxidc.com/Linux/2014-03/98608.htm
在redhat6.4上编译z3求解器的更多相关文章
- win10安装z3求解器
因为课程要求,我不得不接触求解器,之前有在ubuntu上装过一个叫stp的求解器,没怎么用: 今天在我的电脑(win10)上上装了一款更方便的求解器---z3,下面先详细介绍一下怎么安装和配置: 1. ...
- chtMultiRegionSimpleFoam求解器的热源不在边界上【翻译】
翻译自:CFD-online 帖子地址:http://www.cfd-online.com/Forums/openfoam-solving/126777-chtmultiregionsimplefoa ...
- NVIDIA GPU上的直接线性求解器
NVIDIA GPU上的直接线性求解器 NVIDIA cuSOLVER库提供了密集且稀疏的直接线性求解器和本征求解器的集合,它们为计算机视觉,CFD,计算化学和线性优化应用程序提供了显着的加速.cuS ...
- Qt+MPlayer音乐播放器开发笔记(一):ubuntu上编译MPlayer以及Demo演示
前言 在ubuntu上实现MPlayer播放器播放音乐. Demo Mplayer MPlayer是一款开源多媒体播放器,以GNU通用公共许可证发布.此款软件 ...
- TRAC-IK机器人运动学求解器
TRAC-IK和Orocos KDL类似,也是一种基于数值解的机器人运动学求解器,但是在算法层面上进行了很多改进(Specifically, KDL’s convergence algorithms ...
- SCIP | 数学规划求解器SCIP超详细的使用教程
前言 小伙伴们大家好呀!继上次lp_solve规划求解器的推文出来以后,大家都期待着更多求解器的具体介绍和用法.小编哪敢偷懒,这不,赶在考试周之际,又在忙里偷闲中给大家送上一篇SCIP规划求解的推文教 ...
- 数学规划求解器lp_solve超详细教程
前言 最近小编学了运筹学中的单纯形法.于是,很快便按奈不住跳动的心.这不得不让我拿起纸和笔思考着,一个至关重要的问题:如何用单纯形法装一个完备的13? 恰巧,在我坐在图书馆陷入沉思的时候,一位漂亮的小 ...
- [No0000AB]用Visual Studio 2015在 WIN10 64bit 上编译7-zip (32 bit)
1.7-ZIP简介 7-zip 是一款免费的压缩解压软件.ZIP格式的文件默认被苹果和微软支持,完全不需要额外安装其他软件就可以解压.但对于非US-ASCII编码的文件名和大于2GB的ZIP文件,可能 ...
- 解决Qt在openSUSE上编译出现“cannot find -lGL”错误
在openSUSE上编译QT5.4程序出现“cannot find -lGL”,就连example都无法通过编译.QT是在官网下的最新的安装包. 大体意思是,缺少qt运行时所需要的openGL库.决绝 ...
随机推荐
- 无需编写代码,API业务流程测试,零代码实现
引言 除了测试单个接口,我们常常需要对多个有数据或者逻辑关联的接口进行业务流程测试,例如获取验证码-注册-登录.传统测试业务流程需要编写一系列测试代码,现在通过eoLinker全UI界面,无需编写任何 ...
- 【剑指Offer】22、从上往下打印二叉树
题目描述: 从上往下打印出二叉树的每个节点,同层节点从左至右打印. 解题思路: 本题实际上就是二叉树的层次遍历,深度遍历可以用递归或者栈,而层次遍历很明显应该使用队列.同样我们可以通过 ...
- Spring Cloud系列(二) 介绍
Spring Cloud系列(一) 介绍 Spring Cloud是基于Spring Boot实现的微服务架构开发工具.它为微服务架构中涉及的配置管理.服务治理.断路器.智能路由.微代理.控制总线.全 ...
- 11、mybatis的映射xml中参数类型的别名
在mapper.xml中,定义很多的statement,statement需要parameterType指定输入参数的类型.需要resultType指定输出结果的映射类型. 如果在指定类型时输入类型全 ...
- 【习题4-1 Uva1589】Xiangqi
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 车是可以被吃掉的... 注意这个情况. 其他的模拟即可. [代码] #include <bits/stdc++.h> u ...
- Spring MVC灵活控制返回json的值(自定义过滤字段)
在使用spring MVC开发过程中,为了提高项目执行效率,所以在一些外键字段的实体中会注解”@ManyToOne(fetch = FetchType.LAZY)”以实现延迟加载的效果. 但是,在使用 ...
- js获取URL参数的函数
function GetQueryString(name) { var reg = new RegExp("(^|&)" + name + "=([^&] ...
- Tarjan算法求解桥和边双连通分量(附POJ 3352 Road Construction解题报告)
http://blog.csdn.net/geniusluzh/article/details/6619575 在说Tarjan算法解决桥和边双连通分量问题之前我们先来回顾一下Tarjan算法是如何 ...
- FZU - 1606 - Format the expression
先上题目: Problem 1606 Format the expression Accept: 87 Submit: 390Time Limit: 1000 mSec Memory Li ...
- DJANGO里让用户自助修改密码
参考了网上的实现,最终实现的各代码如下: changepwd.html模板文件: {% extends "Prism/index.html" %} {% load staticfi ...