Extcalc 是个非常强大的计算器,同时也是一个非常老的软件包,已经不再更新。希望使用 apt-get 或是 dnf 安装已经不可能,更何况我是在 mips 的龙芯 3A 上。唯一的方法就是编译安装。

我是在龙芯 3A4000 + Debian10 上完成安装的,其他系统可能有些许差别。

编译安装

  • 获得源码包

从它的 sourceforge 首页获得源码包: 传送门

  • 编译

README 内容的部分翻译:

依赖的软件:
Linux
GCC 4
QT4.3 或更高版本
OpenGL
cmake

如果有缺少,安装即可。对于 GCC 4,我的版本是 gcc version 8.3.0 (Debian 8.3.0-6) ,编译没有大问题。对于 QT4.3, Debian 下运行 sudo apt-get install qt4-dev-tools

安装
- 解压缩 (tar -xzf extcalc-0.9.3.tar.gz)
- 切换到目录 (cd extcalc-0.9.3)
- 运行 configure (cmake .)
- 编译 (make)
- 切换为超级用户 (su)
- 安装 (make install)

按部就班来就可。

cmake .

第一次编译,报错说找不到 qtcore,但是我可以手动找到它。于是我安装了 cmake-guisudo apt-get install cmake-qt-gui ,使用 cmake-gui . 代替 cmake .

cmake-gui . 显示 QT_QTCORE_LIBRARY_DEBUGQT_QTCORE_LIBRARY_RELEASE 无法找到,全部手动定位为 /usr/lib/mips64el-linux-gnuabi64/libQtCore.so.4即可。

单击 Generate 之后再次报错,显示无法找到 QT_MOC_EXECUTABLEQT_RCC_EXECUTABLEQT_UIC_EXECUTABLEQT_INCLUDE_DIR 。分别单击 Add Entry 添加,前三个 Type 选为 FILEPATH ,分别对应为 /usr/bin/moc/usr/bin/rcc/usr/bin/uic ,最后一个 Type 选为 PATH,Value 为 /usr/share/qt4/include 。再次单击 Generate 即成功。

第一次编译我发现没有 qt4 的 include ,于是安装了 qt4-dev-tools 。第二次尝试重现错误时错误消失。

make

Warning 有忽略函数返回值和 string 强制转换为 char* ,没有什么大问题。

一个 error :

/usr/bin/ld: CMakeFiles/extcalc.dir/src/graphout.o: undefined reference to symbol 'glBlendFunc'
/usr/bin/ld: //lib/mips64el-linux-gnuabi64/libGL.so.1: error adding symbols: DSO missing from command line
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/extcalc.dir/build.make:994:extcalc] 错误 1
make[1]: *** [CMakeFiles/Makefile2:73:CMakeFiles/extcalc.dir/all] 错误 2
make: *** [Makefile:152:all] 错误 2

可见是 build.make 的第994行出错,看看是啥:

$(CMAKE_COMMAND) -E cmake_link_script CMakeFiles/extcalc.dir/link.txt --verbose=

link.txt 里面是用 c++ 把所有 .o 进行链接,而 glBlendFunc 是 Opengl 的一个函数,怀疑是编译选项的问题。最后加上 -lGL 的选项再重新 make 即可成功完成编译。

  • 安装

make install

su 切换为超级用户后 make install 即可安装成功。命令行 extcalc 或单击其应用程序图标即可运行~

  • 卸载

安装后,查看目录里有个 install_manifest.txt 文件,保留它。如果需要卸载,运行 cat install_manifest.txt | sudo xargs rm即可。

生成 Debian 包

这一部分内容的可行性和是否会对系统造成损害将由读者自行判断

(这是我第一次打包)

编辑 CMakeLists.txt

SET(CPACK_INSTALL_CMAKE_PROJECTS "<路径>;Extcalc;ALL;/") 一行中的 <路径> 改为你现在所在编译目录的路径;

SET(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "i386") 这有两行同样的,把 i386 改为你编译生成的二进制文件的体系架构,比如我这里是 mips64el

修改后保存。

CMakeLists.txt 本身已经把所有需要的设置都搞好了,我们直接生成它就好了。

cpack -G DEB 生成deb包, cpack -G RPM 生成rpm包。

也可以使用 checkinstall ,但是不太会用:

安装 checkinstall

sudo apt-get install checkinstall

sudo checkinstall

sudo checkinstall ,它会提示你输入描述和确认一些东西,看情况选择即可。

最后显示 创建 Debian 包……OK 则创建成功,它同时会替你安装这个包,显示 安装 Debian 包……OK

如此,我们可以方便地通过 dpkg 卸载它,也可以方便地用于下一次安装。

by SDUST weilinfox

本文地址:https://www.cnblogs.com/weilinfox/p/12650351.html

从零开始编译安装 Extcalc的更多相关文章

  1. LINUX 编译安装 PHP 环境

    今天终于有时间 总结一下 linux 的编译安装 php 环境同学给我发了他写的文档 ,基本就可以实现编译安装了我同学文章地址: http://penghui.link/articles/2016/0 ...

  2. Centos6.5下编译安装mysql 5.6

    一:卸载旧版本 使用下面的命令检查是否安装有MySQL Server rpm -qa | grep mysql 有的话通过下面的命令来卸载掉 rpm -e mysql //普通删除模式 rpm -e ...

  3. CENTOS 6.5 平台离线编译安装 PHP5.6.6

    一.下载php源码包 http://cn2.php.net/get/php-5.6.6.tar.gz/from/this/mirror 二.编译 编译之前可能会缺少一些必要的依赖包,加载一个本地yum ...

  4. Linux下编译安装Vim8.0

    什么是Vim? Vim 是经典的 UNIX 编辑器 Vi 的深度改良版本.它增加了许多功能,包括:多级撤销.格式高亮.命令行历史.在线帮助.拼写检查.文件名补完.块操作.脚本支持,等等.除了字符界面版 ...

  5. OpenSUSE下编译安装OpenFoam

    在不是Ubuntu系统下安装OpenFoam,需要采用编译安装的方式.以下以OpenSuSE为例进行编译安装. 1 软件包准备 需要下载两个程序包: OpenFOAM-4.x-version-4.1. ...

  6. 不要着急改代码,先想想--centos 6.8下编译安装tmux

    诸位读者新年好,2017开年第一篇博客,请允许我先问候一下看到这篇博客的诸位.写博客是我2017年定下的目标之一,希望我会坚持下去. 最近打算尝试一下tmux这个神器,于是有了这一篇关于思维方式的Bl ...

  7. protobuf的编译安装

    github地址:https://github.com/google/protobuf支持多种语言,有多个语言的版本,本文采用的是在centos7下编译源码进行安装. github上有详细的安装说明: ...

  8. 编译安装mysql

    参考:http://www.centoscn.com/CentosServer/www/2015/0422/5245.html 安装mysql5.6.17 1.按照标准需要给mysql创建所属用户和用 ...

  9. 编译安装zabbix3.2

    1.1 环境准备 系统环境准备:redhat 6.6 64位mysql-5.6.34php-5.6.28zabbix-3.2.1配置前先关闭iptables和SELINUX,避免安装过程中报错. # ...

随机推荐

  1. CSS3实现一个旋转的花朵

    要效果图如下: 实现原理:其实很简单,就是中间的圆圈定位在中间,其他的6个圆圈,进行不同的绝对定位,然后进行旋转!代码: <!DOCTYPE html> <html lang=&qu ...

  2. 用CSS3实现钟表效果

    背景:最近在学习CSS3,看到了一个小案例,通过自己的学习,动手实现了它,现在把它分享出来. 效果图 实现过程 1.首先我们需要在页面中写出一个静态的钟表效果.首先我们需要一个表盘div wrap 对 ...

  3. Ubuntu16.04如何安装bazel?

    官方文档:https://docs.bazel.build/versions/master/install-ubuntu.html 我没有使用二进制的安装方法,以下是二进制的安装方法: Install ...

  4. 【猫狗数据集】谷歌colab之使用pytorch读取自己数据集(猫狗数据集)

    之前在:https://www.cnblogs.com/xiximayou/p/12398285.html创建好了数据集,将它上传到谷歌colab 在colab上的目录如下: 在utils中的rdat ...

  5. Head First设计模式——生成器和责任链模式

    生成器 生成器模式:封装一个产品的构造过程,并允许按步骤构造. 现又一个度假计划指定,需要指定度假每一天的活动.旅馆.用餐.门票等等事情,但是每个客人的度假计划可能不太一样.例如天数.活动类型.用餐等 ...

  6. 《即时消息技术剖析与实战》学习笔记12——IM系统如何提升图片、音视频消息发送、浏览的体验

    IM系统如何提升用户发送.浏览图片和音视频消息的体验呢?一是保证图片.音视频消息发送得又快又稳,二是保证用户浏览播放图片.音视频消息时流畅不卡顿. 一.提升用户发送图片.音视频的体验 1. 多上传接入 ...

  7. 误用git reset -hard 的检讨书

    误用git reset -hard 的检讨书 消失的代码们: 我知道你们可能看不到了,但是我还是需要自我反省自己,因为自己的误操作,导致了你们的消失. 事情的始末 夜阑人静,周围除了少年敲击键盘的声音 ...

  8. JVM系列八(虚拟机性能监控命令).

    jps JVM Process Status Tool,显示指定系统内所有的 HotSpot 虚拟机进程.显示信息包括虚拟机执行主类名称以及这些进程的本地虚拟机唯一ID(Local Virtual M ...

  9. Spring注解 - 组件的注册

    Spring Boot的出现极大的简化了我们的开发,让我们无需再写繁杂的配置文件,其正是利用了注解的便捷性,而Spring Boot又依赖于Spring,因此深入学习Spring的注解是十分必要的. ...

  10. Java高效编程:总结分享

    参考资料:慕课网:Java高效编程收费实战课程.博客园.CSDN.菜鸟教程以及其他文档. 篇幅受限,不太想针对每个点都写篇博客,有的地方可能写的不是很详细,一笔带过了.如果你觉得那个点在项目中用得上可 ...