本文将介绍博主在Jetson TX1上进行开发的两个技巧,一是安装使用Qt Creator来调试C++工程代码,包括Caffe的C++接口;二是配置远程桌面,方便PC或者手机远程查看和简单操作。关于第一条,博主之前写过博文介绍Eclipse调用Caffe接口的配置:Ubuntu 16.04使用Eclipse运行Caffe-SSD的cpp代码 ,不过现在已经转为使用Qt Creator了,原因很简单:TX1暂时无法安装使用Eclipse for C++,而且相较于Qt Creator,其配置过于繁琐。关于第二条,该方法也适用于其他Ubuntu主机,想用远程桌面的可以参考。
普通Ubuntu电脑上想安装Qt Creator,只需要去官网下载最新的Linux版离线安装包即可。如果是在TX1上使用Qt Creator,就只能通过软件仓库下载安装,缺点是软件版本较老,没办法,TX1是小众的arm平台。
$ sudo apt-get install qt5-default qtcreator -y # 安装Qt Creator
安装好后还需要打开IDE,进行使用前的配置。
TX1上新安装的Qt Creator并不能直接使用,在测试hello程序的时候,就会报错:error: Qt Creator needs a compiler set up to build. Configure a compiler in the kit options.
错误原因是没有正确配置编译器。
下面就开始进行gcc的配置,首先定位到Tools->Options->Build & Run->Compilers ,然后点击Add并选择GCC,在compiler path一栏,输入gcc地址:/usr/bin/gcc 。接下来修改ABI选项,将其依次修改为custom – arm – linux – generic – elf – 64 bit,完成后点击apply生效。
接下来,点击Kits选项卡,新建一个名为”Jetson TX1”的编译工具(名字可以自己取),并参考下图作对应修改。
这里也有个网页教程:Install Qt Creator on NVIDIA Jetson TX1 。貌似有墙,可能有人进不去,我只能把网页pdf和里面的视频放这儿,需要的可以下载:百度云
配置好以后,就可以自己新建项目来测试简单的C++代码了,过程很简单,没什么可说的,只需记得两点:如果是单纯的C++工程,没有界面的那种,请选择Non-Qt Project;然后选择编译工具Kits的时候,需要选择新建的那个,比如上文提到的”Jetson TX1”。
之所以说Qt Creator的使用很简单,是因为其配置基本只需要在pro文件中写几行就行了,相对其他C++ IDE已经是大为简化了。比如运行简单openCV,pro文件只需要添加如下内容:
# opencv
INCLUDEPATH += /usr/local/include
LIBS += -lopencv_core -lopencv_highgui -lopencv_imgproc
扩展到Caffe-SSD工程,我们需要添加更多行,使得程序能找到对应的include和lib,例如TX1所用pro文件配置如下所示:
# include
INCLUDEPATH += /home/ubuntu/caffe/include \
/home/ubuntu/caffe/distribute/include \
/usr/local/cuda-8.0/include \
/usr/local/include \
/usr/local/include/opencv \
# libs
LIBS += -L/home/mx/caffe/build/lib
LIBS += -L/usr/local/cuda-8.0/lib
LIBS += -L/usr/local/lib
LIBS += -lcaffe -lopencv_core -lopencv_highgui -lopencv_imgproc
这里说明一下:我的TX1仅用源码安装了openCV,而glog,gflags和boost都是用的apt-get来安装的,这样子是运行正常的。而电脑上如果没有源码安装这几个库就会报错(原因不明),所以我的电脑上的pro文件配置是如下所示的,多了glog,gflags,boost的include和lib语句。
# include
INCLUDEPATH += /home/mx/caffe/include \
/home/mx/caffe/distribute/include \
/usr/local/cuda-7.5/include \
/usr/local/include \
/usr/local/include/opencv \
/usr/local/include/boost \
/usr/local/include/glog \
/usr/local/include/gflags \
# libs
LIBS += -L/home/mx/caffe/build/lib
LIBS += -L/usr/local/cuda-7.5/lib
LIBS += -L/usr/local/lib
LIBS += -lcaffe -lopencv_core -lopencv_highgui -lopencv_imgproc -lglog -lgflags -lboost_system
Ubuntu实现远程桌面的方法较多,本文只选取了较为简单的一种方式,即使用VNC来操作。该配置可以让Windows系统和智能手机远程访问TX1的Ubuntu系统。过程只有三步,简单叙述如下。
首先找到TX1中自带的Desktop Share程序,打开后进行如下设置,这里我选择不设置密码:
终端输入如下命令安装dconf-editor工具:
sudo apt-get install dconf-editor
dconf-editor
然后打开dconf-editor,依次展开org->gnome->desktop->remote-access,取消选择requre-encryption(图中第3个勾)。
现在去官网下载VNC Viewer,这软件免费使用,还支持这么多平台,真是良心啊。我下载了Windows和Android客户端。
想要使用VNC进行远程连接,必须保证这些设备在同一个局域网之下,客户端的配置过程比较简单,输入TX1的IP地址(终端命令为ifconfig
)和主机名(ubuntu),就完成了配置,点击连接,效果如图所示。