Ubuntu 14.04.5编译安装OpenCV-2.4.13.5

  • 获取源代码

  • 安装依赖库

  • 编译源代码

如果要生成DEB安装包,则上面的命令修改成

  • 替换已经安装的版本

  • 编译出错的处理

如果执行cmake时候出现如下错误信息

则应该是在代码根目录下直接执行过cmake,导致根目录下生成了CMakeCache.txt,需要删除CMakeCache.txt再次执行编译即可。

相关链接


Ubuntu 14.04.5源代码编译ROS Indigo并建立自己的DEB安装源

正常情况下我们使用已经编译好的ROS安装包来安装配置默认的ROS环境,就可以比较好的完成工作了。具体参考Ubuntu14.04安装和配置ROS Indigo

但是在某些情况下,比如,我们需要替换或更新里面的某些默认安装包的版本(比如OpenCV)。

这种情况下,我们就只能重新从源代码开始编译,或者构建自己的安装源了。

上面的操作是生成完整的文件,然后再拷贝到需要安装的最终目录(--install-space /opt/ros/$ROS_VER_NAME指定),但是并没有生成DEB格式的安装包。

如果我们需要建立自己的安装源,那么参照上面的操作,并且正常编译完成后,使用下面的步骤编译安装包:

至于如何建立自己的源,请参考:建立自己的apt-get源

对于替换OpenCV重新编译的情况,参考Ubuntu 14.04.5编译安装OpenCV-2.4.13.5,然后执行sudo apt-get remove libopencv-dev&&sudo apt-get autoremove && rm -rf ~/ros_catkin_ws/install_isolated 删除已经安装好的OpenCV以及临时文件,然后重新编译ROS源代码。最后可以从~/ros_catkin_ws/install_isolated/share/cv_bridge/cmake/cv_bridgeConfig.cmake中看到已经链接刚刚编译安装的OpenCV版本了。

参考链接


腾讯云挂载数据盘(Ubuntu 16.04.3 LTS)

腾讯云介绍的挂载数据盘的操作比较繁琐,如果只有一块数据盘,并且数据盘只创建一个分区,而且磁盘空间不超过2TB,可以使用下面的方法:

参考链接


使用 MBR 分区表分区并格式化

Ubuntu 16.04.3 Server使用SSH登陆中文显示为乱码

最近尝试迁移向腾讯云,然后通过SSH登陆到服务器,发现编辑脚本的时候中文会显示为乱码。

服务器的版本是Ubuntu 16.04.3 Server

解决方法非常简单,执行如下命令即可:

参考链接


Ubuntu server 中文环境方格乱码解决方法

Ubuntu 16.10/17.10无法通过/etc/rc.local开机启动应用

最新的Ubuntu 16.10/17.10上已经找不到/etc/rc.local这个文件了。但是我们很多配置都是写在这个文件里面的,因此如果直接按照systemd配置服务的话,需要修改很多。这里我们使用一个比较简单的兼容方案。

创建systemd的服务脚本

里面的内容如下:

激活服务

手工创建或者拷贝已有的/etc/rc.local,这里我们以手工创建为例子:

参考链接


树莓派系统升级Raspbian Wheezy到Raspbian Jessie(树莓派2B+)

树莓派官方已经放出了Raspbian 8 Jessie。这是Raspbian Wheezy 2015.5.5之后的一次比较大的版本更新。而老的Raspbian Wheezy版本也可以通过简单的步骤升级到Raspbian 8 Jessie且不用重新刷写镜像。下面将介绍如何升级,要知道,升级有可能会破坏现有系统,在此之前请一定注意备份好老的系统。如果你对之前的系统做的更改越小,升级将会越顺利。

1. 更新当前系统到最新

2. 更新软件下载源

3. 升级到Raspbian 8 Jessie

参考链接


树莓派系统升级 Wheezy 到 Raspbian Jessie

Ubuntu 14.04及之后版本重启网卡不生效

Ubuntu 14.04修改配置,重启网卡没有生效,出现如下问题:

从以上日志内容可以看出,传统的service重启和停止网络已经不再支持了,需要通过使用ifdown & ifup来实现相应的操作。

如果在远程Shell操作的情况,上面的命令可能会只执行了ifdown,然后连接就断开,而无法执行后面的ifup命令,导致无法继续操作。

解决方法是把上面的命令写入一个脚本文件执行:

参考连接


linux Ubuntu14.04及之后版本重启网卡不生效

OpenMediaVault-4.0.15执行更新(apt update)时报错“TypeError: 'NoneType' object is not callable”

OpenMediaVault-4.0.15执行更新(apt update)时报错,详细错误信息如下:

通过观察发现,只要从packages.openmediavault.org中下载文件失败,就会报告这个错误。

发生错误之后,重新执行

即可解决这个问题,或者忽略这个错误信息即可。

Python中用Ctrl+C终止threading初始化的多线程脚本

在编写Python脚本的时候,难免会遇到使用多线程操作的情况。

正常情况下,我们都习惯在Shell中使用Ctrl+C终止脚本的执行,但是在多线程环境中,我们发现Ctrl+C并不能有效终止开启了多线程的脚本。

由于Python提供的threading模块并没有提供线程的退出接口,导致我们没有办法终止已经正常运行的线程,尤其是线程被阻塞在内核的情况下。

解决这个问题的办法就是在线程初始化之后设置为守护模式(setDaemon),并且不要调用join阻塞主线程。这样当主线程退出的时候,其他线程也随之退出了。

下面是我们解决这种问题的一个例子:

参考链接


Python 中用 Ctrl+C 终止多线程程序的问题解决