NVIDIA TX2 (Ubuntu 16.04)上安装CUDA 8.0

使用如下方式安装:

至于如何获取最新的 NVIDIA TX2上使用的 CUDA 8.0版本的下载地址,请访问Jetson Download Center,下载目前最新的JetPack 3.1。执行之后在存储目录下的 repository.json中找到最新的下载链接即可。当然也可以让JetPack 3.1自动下载完成最新的 CUDA 8.0版本到指定目录。

Ubuntu 16.04上使用crosstool-ng编译Nvidia TX2上使用的boost库

目前在 Nvidia TX2上尝试安装 ROS Kinetic的时候发现依赖 libboost-all-dev,但是自带的源http://ports.ubuntu.com下面没有合适的源,尽管在 universe源下面包含 libboost-all-dev ,但是实际安装的时候发现安装不上。

因此尝试手工编译最新的 boost安装包,建立自己的源。

首先,编译安装最新的 crosstool-ng,如下:

生成的工具链在 ~/x-tools/aarch64-rpi3-linux-gnueabi目录下,编译的时候,指定编译工具即可。

安装编译依赖

接着,下载并编译最新的代码

注意,对于 boost-1.58来说,当时的代码是没有检测 ARM64的功能的,当年也没有 ARM64的芯片。因此需要修改 {boost_root}/libs/config/checks/architecture/arm.cpp里面的代码,增加 ARM64的判断

调整为

参考链接


Linux下编辑ISO文件的方法

我们知道 Windows下有类似 UltraISO的这样的软件可以用来编辑 ISO文件,可引导 ISO也没有问题。近来在 Linux下玩的比较多,正好要改个 ISO,于是就开始找 Linux下有没有类似的软件。

Ubuntu软件中心里有一款叫 ISOMaster的软件,可以创建和修改 ISO文件。

继续阅读Linux下编辑ISO文件的方法

OpenCV使用cv::imshow在子线程中更新图片不刷新

Ubuntu 16.04上测试 OpenCV 3.2,遇到一个在子线程中更新图像,而界面不刷新的问题。

编译执行如下代码:

可以看到,上面的代码执行之后,界面并没有出现,即使出现也没有刷新。

这个问题是由于界面更新必须在主线程中执行,需要手工通知主线程。

修改后的代码如下:

也就是每次更新图片后手工调用代码

这个等候时间,只要大于 即可,比如:

参考链接


c++ opencv image not display inside the boost thread

在Makefile中检查gcc版本

问题描述

我想使用一些在旧的 GCC版本中不可用的 GCC警告开关(例如 -Wtype-limits)。

有没有一个简单的方法来检查 GCC版本?

最佳解决方案

我不会说容易,但是可以使用 GNU makeSHELL函数来执行 gcc --version命令,然后使用 ifeq条件表达式来检查版本号,并适当地设置 CFLAGS变量。

以下是一个简单的 MakeFile示例:

注意:不存在 ifgt语法。但是可以使用 expr命令进行比较。

例子如下:

次佳解决方案

要将完整的 3部分 GCC版本(不仅第一位数字)转换成数字格式,适合比较(例如 40701)使用

其中解决了任何版本部分中双数字版本号的可能性,以及 gcc -dumpversion输出内容缺少 3个部分的可能性(在一些较早的 GCC版本中存在这种情况)。

所以要测试 MakeFile中的版本,使用(注意 $$里面的最后一个 sed命令)

第三种解决方案

我刚刚遇到这个问题,我需要测试 GCC的前两位数字,想要一个比上面 sed过滤字符串更复杂的操作。我使用 bc进行比较,因为它支持浮点数( expr将非整数( non-integers)都视为字符串):

如果在 GCC 4.9之后发布了 GCC 4.10,那么用 sed处理是必要的:

参考链接


在Makefile中检查gcc版本?

OpenMdeiaValut 3.0.86上编译Linux Kernel 4.13-rc6/Linux Kernel 4.13-rc7/Linux Kernel 4.13 Mainline

也可以使用下面的方式正常编译 Linux Kernel 4.13-rc7/Linux Kernel 4.13 Mainline

建议使用 VirtualBox上建立虚拟机,保证磁盘空间不小于 32GB,给 root用户设置密码,远程通过 shell登录到虚拟机。

查询虚拟机的 IP地址的时候,使用

命令查询。虚拟机网卡设置的时候,设置为桥接模式,默认的 NAT模式无法通过 SSH登录。

然后执行如下命令:

完成后,在当前用户目录下生成 linux-image-4.13.0-rc6_4.13.0-rc6-10.00.Custom_amd64.deb安装包,执行如下命令安装:

参考链接


Debian下的内核编译

ubuntu 16.04执行letsencrypt的时候报告错误“ImportError: No module named datetime”

网站一直使用 letsencrypt提供的 HTTPS证书,这个证书的问题在于每隔三个月就必须更新一次,本次更新证书的时候,提示如下错误:

错误发生的原因在于 letsencrypt自己构建了一个 Python的虚拟环境来隔离,但是早期建立的虚拟环境中是缺少部分软件包的,而自身的 BUG导致也没有重新更新虚拟环境,导致出现异常。

解决方法就是删除 letsencrypt自己构建的 Python的虚拟环境,然后继续执行脚本让他重建即可。

参考链接


Ubuntu分析磁盘使用情况

Ubuntu系统上,由于某些原因导致磁盘空间不足,需要分析一下磁盘使用情况,看看是哪个目录或者应用占据了磁盘。

Ubuntu系统默认自带的磁盘分析工具是 baobab,如果没有自动安装,可以执行如下命令来手动安装:

这个工具的问题在于,如果直接点击启动,会由于权限问题,无法完整的分析磁盘。

因此,需要在命令行下面用 root权限去执行:

参考链接


Ubuntu 16.04上查看dd命令的进度信息

Ubuntu 16.04系统上执行如下命令

的时候,可能会非常耗时,这个时候,如果让 dd命令输出执行进度信息,会非常有用。

重新打开一个 Shell,然后执行如下命令即可每秒输出一次进度信息

参考链接