嵌入式 Linux 入门 环境篇(四、必备开发工具安装)

2023-11-15

嵌入式 Linux入门 环境篇第四课,开发工具软件的安装与说明  ......  by 矜辰所致

前言

前面的环境篇我们把开发的基本环境安装好了:Ubuntu虚拟机,网络配置。

为了从 0 开始说明,还特意买了一台新电脑 = =! 就问是不是不将就!!!

在我们接下来做嵌入式 Linux 开发学习的时候,还需要在我们的平台上安装各种开发软件,比如开发 STM32 时候可能需要到 Keil、IAR、STM32CubeMX 等。

所以本文就介绍一些 嵌入式 Linux 开发常用的工具。

说明,文章虽然会把常用的工具罗列介绍,但是部分工具需要在后期学习过程中使用到的时候才方便介绍,有些现在说了对于入门者来说,也不知道干什么的,安装了可能到时候就忘了,还不如等使用到的时候再介绍。

❤️ 嵌入式 Linux 入门 环境篇系列博文:
嵌入式 Linux 入门 环境篇(一、开发板初体验)
嵌入式 Linux 入门 环境篇(二、安装虚拟机 — 体验 Ubuntu 22.04)
嵌入式 Linux 入门 环境篇(三、开发板和 PC 的网络互通)
.
我是矜辰所致,一名摸爬滚打于物联网行业十多年的嵌入式工程师,尽量用心写好每一系列文章,不浮夸,不将就,认真对待学知识的我们,矜辰所致,金石为开!

一、软件源说明

先说明下本 环境篇系列文章所用到的软件都在哪里下载,软件包括前面文章说到的,也包括后面需要用到的。

我接触过的做 Linux 开发板带视频文档教程的有 正点原子、韦东山老师、野火,其实他们都有做 STM32 的开发板和教程。现在他们几家做开发板,那么他们的资料都是免费的,大家都可以自己去网上搜索他们几家的关于 嵌入式开发板的配套资料,里面需要用到的软件都帮大家下载好了。

截取一小段给大家看看:

在这里插入图片描述

现在流行的嵌入式 Linux 开发板有两款:i.MX6ULL 和 STM32MP1 系列。对于开发所用的工具和环境都是一样的,就算不是使用的他们这几家的开发板学习,也是大差不差,环境搭建都是通用的。

当然,他们的资料大都放在网盘,也是需要下载的,对于某些我们自己直接可以方便下载到的软件,我们可以直接去对应软件的官网进行下载,这样版本也能够新一点,对于有些境外资源,下载特别慢的情况下,我们可以直接使用提供的配套版本软件。

二、Windows 端软件

先来说 Windows 端的常用软件。

为了使得文章更加完善,即便前面我们安装过的软件,本文中也会列出一个目录,只是不再做过多的介绍。

2.1 MobaXterm

全能型终端软件,支持多种协议,嵌入式开发必备,使用说明见前面文章:《嵌入式 Linux 入门 环境篇(一、开发板初体验)》

下载地址,网上搜一下就有官网,很好找,我就不放外站连接,下载免费版本即可:

在这里插入图片描述

2.2 VScode

代码编辑器 VScode ,现在没有人不知道把,都不知道怎么介绍了,微软出品,免费的、跨平台的、功能强大的编辑器。

现在我做 STM32 的开发已经完全抛弃了 IDE,使用 VScode 环境:

在window下使用 VScode 搭建 ARM 开发环境—— 详细版

个人感觉现在估计占了编辑器的半边天 = =!

下载地址,也是网上搜索官网下载就好,如下图:

在这里插入图片描述

但是 VScode 下载有一个问题,就是特别慢。

VScode 下载速度慢问题

因为 VScode 官网点击下载的安装包镜像地址在国外,我们可以手动换成国内的镜像源。

具体方式如下,我们在官网点击下载以后,找到下载进度条,不同浏览器会有不同,但是都能够复制下载链接,比如我使用的火狐浏览器,如下图所示:

在这里插入图片描述

复制后直接粘贴直接到浏览器,然后将下载地址中开头的 az764295.vo.msecnd.net 更改为
vscode.cdn.azure.cn ,更改完成直接回车确定即可开始下载,如下图:

在这里插入图片描述

安装下载完成,配置自己喜欢的主题,安装一些必备的插件,就可以开始使用了:

在这里插入图片描述

2.3 Sourceinsight

Sourceinsight 也是一款编辑器,本来同样的东西,选择一种就行,比如 SecureCRT 和 MobaXterm 。

但是这里得破例一下, 因为 Sourceinsight 的源码导航,代码框架查看 没有任何其他的编辑器比它更出色。 这只是我个人最喜欢的点,它还有其他的很多优点就不多说了。

在10年前还没有 VScode 的年代,我就一直使用的 Sourceinsight ,在后来出了 Vscode 之后,因为在 Vscode 中可以直接编译下载 STM32 的工程,工作接触 STM32 比较多,才更多的使用了 Vscode 。

STM32开发 相对于Linux 开发来说,代码量少得可怜,所以对于工程结构(也就是 VScode 中的大纲)查看需求没那么高,但是现在要做代码量大的 Linux 工程,所以是时候用上 Sourceinsight 了。

但是要说明的 Sourceinsight 不是免费的,没有购买序列号只能试用 30 天,这个看大家自己需求吧。 然后再给大家一个表情 o( ̄︶ ̄)o 自己体会。

下载地址页面如下:

在这里插入图片描述

我这里直接使用的配套资料中提供的版本安装:

在这里插入图片描述

步骤就省略了,安装很快,最后安装完成没有序列号试用就选择第二项:

在这里插入图片描述

最后可以尽情的用起来了,使用和配置方式大家可以自己网上搜索,这要说明太多东西,编辑器嘛,大家可以自行摸索,这里简单说明一下新建工程的步骤。

这里要特别说明一下, Sourceinsight 的工程路径不能有中文!!!

Sourceinsight 新建工程

打开 Sourceinsight ,在 Project 栏目选择新建工程,如下图:

在这里插入图片描述

在弹出的界面输入工程名字,选择工程路径:

在这里插入图片描述

然后弹出下一个界面,一般都是默认不用设置,直接点击 OK ,如下图:

在这里插入图片描述

上图完成点击 OK 后,就弹出添加文件的界面了,相对来说这里比较重要,但还是很简单:

在这里插入图片描述

点击 Add tree,会给出提示:

在这里插入图片描述

点击确定,在上图下面的白色方框内会显示所有的文件,如下图:

在这里插入图片描述

上面添加完成就可以点击 Close 关闭界面,然后在 Sourceinsight 界面栏右边一点击 Project windows 窗口,如下图:

在这里插入图片描述

然后就可以尽情的操作了:

在这里插入图片描述

Sourceinsight 中文乱码

对于没有设置过的 Sourceinsight ,中文应该会是乱码,比如我刚才添加的工程 :

在这里插入图片描述

我们需要进行设置,如下图操作:

在这里插入图片描述

在弹出的界面框内选择,做如下设置,把 Default encoding 改成 GB2312 形式,如下图:

在这里插入图片描述

这个设置是对全部文件生效的,但是不巧,设置之后我的文件还是乱码? 怎么办?

那么只能针对单个文件进行设置了,如下图:

在这里插入图片描述

在弹出的界面,选择 GB2312 编码,如下图:

在这里插入图片描述

然后就能正常的显示中文了:

在这里插入图片描述

2.4 FileZilla

FileZilla 是什么?一个免费的 FTP 客户端软件。

那什么是 FTP ??

专业的名词解释还是引用一下百度百科:

在这里插入图片描述

简单理解就是: FTP 是一个文件传输协议。

咦 ? 这里不知道小伙伴们有没有发现,我们上一篇文章《嵌入式 Linux 入门 环境篇(三、开发板和 PC 的网络互通)》 里面讲过一个 SSH 协议?

SSH 与 FTP

先来回顾一下我们上一篇文章中提到的 SSH 协议:

在这里插入图片描述

两个联系我们这里不深入研究,但是记住:SSH 适用于远程登录会话。FTP 适合远程传输文件。

具体的介绍推荐一篇博文:SSH 与 FTP

Ubuntu 开启 FTP 服务

我们知道了 FTP 是一个协议, FileZilla 是一个 FTP 客户端软件,那么有客户端就得有服务器端,这单与 SSH 类似,我们在上一篇文章中,开始 Ubuntu 中没有开启 SSH 服务,导致我们无法远程登录 Ubuntu ,所以我们在使用 FileZilla 之前,需要在我们需要文件传输的 Ubuntu 中开启 FTP 服务。

我们打开我们虚拟机,输入下面指令安装 FTP 服务:

sudo apt-get install vsftpd

在这里插入图片描述

安装完成我们进行一下简单的配置,打开 /etc/vsftpd.conf 文件进行配置。

允许本地用户访问,以及允许本地用户对FTP服务器文件具有写权限,如下图:

在这里插入图片描述

然后使用命令

sudo /etc/init.d/vsftpd restart

重启一下 FTP 服务

那么我们在 windows 端就可以使用 FileZilla 与 Ubuntu 虚拟机互传文件了。

☆ 这里又有人会问了,我们使用的虚拟机不是安装了 VMware Tools 吗? 直接可以在主机与虚拟机之间拖动文件了。

这个当然是没有问题,但是正如我以前讲过很多次一样,如果你开发的 Ubuntu 不是你自己的电脑, 是其他地方的一个系统,那么就不存在 VMware Tools 这种东西了,但是 FTP、 SSH 这种客户端还是可以正常的连接使用。

FileZilla 的安装使用

讲了这么多,回到我们需要安装的 FileZilla 软件上来,我们直接在网上搜索一下这个软件,然后在软件官方下载客户端,如下图:

在这里插入图片描述

下载安装很简单,过程省略,最后安装完成打开界面如下图:

在这里插入图片描述

我们做个简单说明,我们 windows 下的是 FTP 客户端是如何与我们的 Ubuntu (FTP服务器)建立连接然后如何文件传输的。

首先在 FileZilla 软件点击文件 -> 站点管理器,如下图:

在这里插入图片描述

在弹出的界面按照如下步骤操作:

在这里插入图片描述

上面设置完成点击连接,在弹出的界面直接点击确定,因为我们自己开发的电脑,所以默认保存密码没有问题:

在这里插入图片描述

点击确定后,正常就能连接上了,连接好的界面如下图:

在这里插入图片描述

又乱码了,设置一下:

在这里插入图片描述

设置完成就重新连接就好了。

在这里插入图片描述

操作简单,文件传输直接拖拽就行了,双击也可以,这个就不做演示了,大家可以自行尝试。

这样我们就可以实现 windows 和 Ubuntu 虚拟机的文件互传。

对于我们的嵌入式开发,在 windows 部分,上面介绍的几个软件可以说是必备的工具,其他的一些工具,我们在后期学习到需要使用的时候,我们再进行说明。

三、Ubuntu 虚拟机端软件

Ubuntu 上的软件相对 windows 来说就相对复杂一些,还是因为相对于 windows 来说,Ubuntu 使用对新手不是那么友好。不仅是安装,还有各种配置,相对来说没那么容易理解。

所以有厂家把 Linux 下的环境配置写成脚本,一键自动安装,这样方便了新手快速的配置环境。 我们本文挑了一个重要的软件,交叉编译器 来说明。

☆ 交叉编译器 重要,因为我们最终下载到我们开发板的程序都是在 Ubuntu 中通过 交叉编译器编译成的 文件。☆

3.1 vi/vim

vi 编辑器是 Ubuntu 系统自带的,本来没什么好说的,我们还有一篇单独的文章介绍:

嵌入式 Linux 入门(四、Linux 下的编辑器 — 让人爱恨交加的 vi )

在环境第二篇文章安装虚拟机完成后我们也查看过 vi 的版本:

在这里插入图片描述

但是实际上在使用过程中,我发现了问题,键盘 i 并不能正常的进入插入模式,左下角都没有插入提示,按完 i 以后,方向键也会乱码?

刚开始还以为输入法的问题,后来花了一点时间,网上查看了一下问题才解决。

Ubuntu 自带 vi 功能输入异常方向键乱码

Ubuntu 12.04 自带的 vi 安装完成后出现上面的问题,只需要先卸载再重新安装,我们依次执行下面的两句操作即可:

sudo apt-get remove vim-common
sudo apt-get install vim

最后安装完成以后,可以看到版本好像还是一样,但是就已经可以正常使用了:

在这里插入图片描述

3.2 GCC

GCC 本身虽然与我们的 嵌入式 Linux 开发并没有直接关联,但是必须要了解。

简单来说, GCC 是一个编译器,就像 Keil 中的 ARMCC,还不懂得话就是 Keil 中负责编译程序的那部分东西。

GCC 是 LInux 下的标准的编译器,GCC 原本作为 GNU 操作系统的官方编译器,现已被大多数类 Unix 操作系统(如 Linux、 BSD、 MacOS X 等)采纳为标准的编译器, 目前 GCC 是 Linux 下重要的软件开发工具之一。

我在前面文章《嵌入式 Linux 入门 环境篇(二、安装虚拟机 — 体验 Ubuntu 22.04)》中体验的时候已经安装了 GCC :

在这里插入图片描述

有了他我们可以进行 C 语言的程序编译测试。

当然我们做嵌入式开发,最终使用的不是标准的 GCC,而且是 专门针对 ARM 平台的 GCC,就是交叉编译器,对于这个问题,我计划在下一篇文章《嵌入式 Linux 入门(十、Linux 下的 C 编程)》 进行详细说明。

3.3 arm-linux-gnueabihf-gcc

其实这个名字一看,如果看过我文章学习过 STM32 的小伙伴应该了解,我在 windows 下开发 STM32 也使用的是 gcc 工具链,如下图:

在这里插入图片描述

那么这个 arm-linux-gnueabihf-gcc 就是我们 Linux 下的交叉编译器。

那么如何安装这个编译器,对于 Linux 来说我们有可以使用 apt-get install 命令安装软件包,这个在我们入门文章 《嵌入式 Linux 入门(八、Linux 下的软件安装)》中说明过。

使用如下命令安装:

sudo apt-get install gcc-arm-linux-gnueabihf

但是网上说,使用此命令编译器的版本可能存在某些问题,而且下载也需要时间,我这里已经直接下载好了正点原子提供的安装包(自己到https://releases.linaro.org/components/toolchain/binaries/4.9-2017.01/arm-linux-gnueabihf/网站去下载这个安装包也会很慢),所以我决定手动安装,这里我就参考正点原子教材的方式 。

我们使用上面刚装的 FileZilla 工具把压缩文件 gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz传至 虚拟机 :

在这里插入图片描述

接下来我们就在虚拟机进行操作:

在这里插入图片描述

使用下面的代码给个权限,习惯问题,直接拷贝过来的东西大多权限不够:

chmod 777 gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz 

然后我们在 /usr/local 下创建一个 arm 文件夹,用来安装交叉编译器,如下图:

在这里插入图片描述

然后使用命令解压:

sudo tar -vxf gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf.tar.xz

在这里插入图片描述

在 Ubuntu 中,解压完成就等于安装好了,但是道理同 windows 里面类似,我们在以前开发 STM32 进行一些工具链安装的时候,安装完成需要配置环境变量,在 Ubuntu 中也是需要把工具链配置到环境变量。

这个在我们学习过文章 嵌入式 Linux 入门(七、Linux 下的环境变量) 应该不难理解,配置全局变量的相关文件:

在这里插入图片描述

我们就直接修改 /etc/profile 文件,在文件最后加上刚才交叉编译器的环境变量设置,保存退出:

在这里插入图片描述

接着执行 source /etc/profile 手动生效一下刚才的环境变量:

在这里插入图片描述

这样我们就手动的安装了 arm-linux-gnueabihf-gcc 交叉编译器。

lsb-core lib32stdc++6 安装问题

根据文档,我们还需要添加一些对应的库:

sudo apt-get install lsb-core lib32stdc++6

但是这里安装遇到了点问题:

在这里插入图片描述

在网上找了一个解决办法,先安装一个 aptitude ,然后再进行库的安装。

aptitude 是什么?

在这里插入图片描述
我们在 Ubuntu 进行如下操作:

sudo apt-get install aptitude

sudo aptitude -f install lib32stdc++6

注意在第二部安装的时候,出现的选项,第一个选择 “N”, 后面都选择 “Y” ,如下图:

在这里插入图片描述

正常安装完成即可。

对于我们的嵌入式开发,在 Ubuntu 部分,也只是介绍说明几个必备的软件,其他的我在后期学习到需要使用的时候再进行说明。

结语

本文写下来,基本上可以当做一个从 0 开始配置开发环境的参照,虽然只是简单的介绍了一些常用必备工具的安装使用,但是过程中还是遇到一些不同的问题,也算是给记录类型的文章增加了一些有意义的东西。

希望对大家有所帮助,到这里基本的开发环境就已经搭建完成,看看下一篇文章是讲一讲 Linux 下的 C 编程还是再看看环境配置里面,有哪些东西还需要说明,容我整理一下。

好了,本文就到这里,谢谢大家!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

嵌入式 Linux 入门 环境篇(四、必备开发工具安装) 的相关文章

  • 我们真的应该使用 Chef 来管理 sudoers 文件吗?

    这是我的问题 我担心如果 Chef 破坏了 sudoers 文件中的某些内容 可能是 Chef 用户错误地使用了说明书 那么服务器将完全无法访问 我讨厌我们完全失去客户的生产服务器 因为我们弄乱了 sudoers 文件并且无法再通过 ssh
  • tcpdump 是否受 iptables 过滤影响?

    如果我的开发机器有iptables规则到FORWARD一些数据包 这些数据包是否被 tcpdump 捕获 我有这个问题 因为我知道存在其他链称为INPUT如果数据包路由到 它会过滤发往应用程序的数据包FORWARD链 它会到达吗tcpdum
  • Ubuntu 16 LTS - Eclipse 窗口首选项无法正常工作

    我刚刚安装了 Ubuntu 16 04 LTS 我于 3 月 2 日下载了适用于 Linux 64 位的全新 Eclipse 我使用的是最新的 Oracle 热点 JDK 1 8 update 91 版本 在尝试启用 Eclipse 常规首
  • Linux 上的 Pervasive ODBC 错误 [01000][unixODBC][驱动程序管理器]无法打开 lib '/usr/local/psql/lib/odbcci.so':找不到文件

    我正在尝试让 Pervasive v10 客户端 ODBC 在 Centos 6 上运行 据我所知 没有 64 位 ODBC 客户端 因此我必须使用 32 位客户端 我终于成功安装了它 但尝试使用时出现以下错误 isql v mydsn 0
  • 从 ttyUSB0 写入和读取,无法得到响应

    我对 Linux tty 不太有经验 我的环境是带有丰富 USB 串行的 Raspbian 什么有效 stty F dev ttyUSB0 38400 cu l dev ttyUSB0 s 38400 cu to dev ttyUSB0作品
  • 如何在 ubuntu 上将 phantomjs 1.9.8 更新到 phantomjs 2.1.1?

    我无法在 ubuntu 16 04 上重新安装 phantomjs 1 9 8 至 2 1 1 版本 请帮忙 1 9 8 当我编写旋转函数时出现错误 在文档中看到这个问题我可以通过重新安装来解决 我刚刚在 ubuntu 16 04 中安装了
  • 如何根据标签将单个 XML 文件拆分为多个

    我有一个带有标签的 XML 文件 我想像这样分割文件
  • Ubuntu 中的颜色选择器实用程序(颜色移液器)[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 如何让R使用所有处理器?

    我有一台运行 Windows XP 的四核笔记本电脑 但查看任务管理器 R 似乎一次只使用一个处理器 如何让 R 使用全部四个处理器并加速我的 R 程序 我有一个基本系统 我使用它在 for 循环上并行化我的程序 一旦您了解需要做什么 此方
  • Mac OS X 上的 /proc/self/cmdline / GetCommandLine 等效项是什么?

    如何在不使用 argc argv 的情况下访问 Mac OS X 上的命令行 在 Linux 上 我会简单地阅读 proc self cmdline or use GetCommandLine在 Windows 上 但我找不到 Mac OS
  • 如何查找哪个 Yocto 项目配方填充图像根文件系统上的特定文件

    我经常与 Yocto 项目合作 一个常见的挑战是确定文件为何 或来自什么配方 包含在 rootfs 中 这有望从构建系统的环境 日志和元数据中得出 理想情况下 一组命令将允许将文件链接回源 即配方 我通常的策略是对元数据执行搜索 例如gre
  • 如何使用Android获取Linux内核的版本?

    如何在 Android 应用程序中获取 Linux 内核的版本 不是 100 确定 但我认为调用 uname r 需要 root 访问权限 无论如何 有一种不太肮脏的方法可以做到这一点 那就是 System getProperty os v
  • 使用 gdb 调试 Linux 内核模块

    我想知道 API 在内核模块 中返回什么 从几种形式可以知道 这并不是那么简单 我们需要加载符号表来调试内核模块 所以我所做的就是 1 尝试找到内核模块的 text bss和 data段地址 2 在 gdb 中使用 add symbol f
  • Linux/POSIX:为什么 fork() 不分叉*所有*线程

    众所周知 POSIX下创建新进程的默认方式是使用fork 在 Linux 下 这在内部映射到clone 我想知道的是 众所周知 当一个人打电话时fork 子进程是用单个线程创建的 调用的线程fork cf https linux die n
  • 这种文件锁定方法可以接受吗?

    我们有 10 个 Linux 机器 每周必须运行 100 个不同的任务 这些计算机主要在我们晚上在家时执行这些任务 我的一位同事正在开发一个项目 通过使用 Python 自动启动任务来优化运行时间 他的程序将读取任务列表 抓取一个打开的任务
  • cdc_acm:无法设置 dtr/rts - 无法与 USB cdc 设备通信

    我试图使用 pic24fj128gb206 枚举 usb cdc 设备 设备似乎已正确枚举 但是当我将设备连接到 Linux PC 时 我从内核收到以下警告消息 cdc acm 1 8 1 6 7 1 0 failed to set dtr
  • 检查已安装的软件包,如果没有找到则安装

    我需要检查已安装的软件包 如果未安装则安装它们 RHEL CentOS Fedora 示例 rpm qa grep glibc static glibc static 2 12 1 80 el6 3 5 i686 如何在 BASH 中进行检
  • XAMPP为MariaDB设置root用户密码

    如何在 Ubuntu Kubuntu 16 04 上的 XAMPP 中设置 MariaDB 的 root 用户密码 默认情况下 root 用户没有设置密码 我正在使用 XAMPP 7 1 11 我在 Windows 和 Linux 上都成功
  • 从 Linux 内核模块中调用用户空间函数

    我正在编写一个简单的 Linux 字符设备驱动程序 以通过 I O 端口将数据输出到硬件 我有一个执行浮点运算的函数来计算硬件的正确输出 不幸的是 这意味着我需要将此函数保留在用户空间中 因为 Linux 内核不能很好地处理浮点运算 这是设
  • 使用自定义堆的类似 malloc 的函数

    如果我希望使用自定义预分配堆构造类似 malloc 的功能 那么 C 中最好的方法是什么 我的具体问题是 我有一个可映射 类似内存 的设备 已将其放入我的地址空间中 但我需要获得一种更灵活的方式来使用该内存来存储将随着时间的推移分配和释放的

随机推荐

  • Linux常用命令与JavaWeb开发环境的搭建

    文章目录 前言 一 系统信息以及查看文件 1 1系统信息 1 2查看文件 二 查看进程和防火墙的开关 三 搭建Java Web开发环境 3 1JDK 3 2Tomcat 3 3Mysql 总结 前言 Linux 特点 免费 开源 免费 安全
  • 继电器驱动电路原理及注意事项

    继电器驱动电流一般需要20 40mA或更大 线圈电阻100 200欧姆 因此要加驱动电路 1 晶体管用来驱动继电器 必须将晶体管的发射极接地 具体电路如下 NPN晶体管 PNP晶体管 NPN晶体管驱动时 当晶体管T1基极被输入高电平时 晶体
  • 导入数据的几种方法

    采用标准python类库导入数据 读取文件 from csv import reader import numpy as np filename pima csv with open filename rt as raw data read
  • centOS7服务器搭建

    一 安装jdk 运行代码 yum search jdk 1 查询当前云服务器里面通过yum可以安装哪些jdk 以这个jdk1 8的版本为例 运行代码 yum y install java 1 8 0 openjdk 2 安装jdk1 8版本
  • obj(判断对象中是否包含某个key属性)

    key in obj 不包含 obj hasOwnProperty key 包含
  • 纯代码构建Swift工程

    有些东西很简单 但是我还是把它记录了下来 使用Storyboard创建一个新的项目后 应用程序从闪屏 到主窗口 再到第一个界面经过的文件分别是 LaunchScreen storyboard gt Main storyboard gt Vi
  • NBIoT与LoRa技术详解及竞争态势分析

    物联网的无线通信技术很多 主要分为两类 一类是Zigbee WiFi 蓝牙 Z wave等短距离通信技术 另一类是LPWAN low power Wide Area Network 低功耗广域网 即广域网通信技术 LPWA又可分为两类 一类
  • 计算机视觉领域经典模型汇总(RCNN、YOLO等)

    一 RCNN系列 1 RCNN RCNN是用于目标检测的经典方法 其核心思想是将目标检测任务分解为两个主要步骤 候选区域生成和目标分类 候选区域生成 RCNN的第一步是生成可能包含目标的候选区域 RCNN使用传统的计算机视觉技术 特别是选择
  • linux中tmp文件在哪,Linux系统中/tmp文件夹

    在Linux系统中 tmp文件夹里面的文件会被清空 至于多长时间被清空 如何清空的 可能大家知识的就不多了 所以 今天我们就来剖析一个这两个问题 在RHEL CentOS Fedora 系统中 本次实验是在RHEL6中进行的 1 tmpwa
  • 数字后端dbGet使用方法合集

    以下资料是我之前写过的 芯片数字后端中Innovus Encounter dbGet命令使用方法的介绍 整理了一下 做成合集 方便大家查询 点击标题就可以选择文章查看 会直接挂在公众号的主页菜单栏里的 后端资料 里 感觉好的话 请多多推广喔
  • java报错:Connection reset by peer: socket write error

    用java做excel导出时 报错 ClientAbortException java net SocketException Connection reset by peer socket write error 大致出现问题的原因如下
  • java指纹识别+谷歌图片识别技术(采用Hash方法)

    转载自 http blog csdn net yjflinchong article details 7469213 java指纹识别 谷歌图片识别技术 前阵子在阮一峰的博客上看到了这篇 相似图片搜索原理 博客 就有一种冲动要将这些原理实现
  • Python3 PyCharm 捕获异常报 Too broad exception clause 警告

    最近在 PyCharm 中写代码的时候会抱怨 Exception 没有指定错误类型 Too broad exception clause 这是因为捕获的异常过于宽泛 没有针对性 可以通过指定精确的异常类型来解决 BaseException
  • NLP进阶,使用TextRNN和TextRNN_ATT实现文本分类

    TextRNN TextRNN仅仅是将Word Embedding后 输入到双向LSTM中 然后对最后一位的输出输入到全连接层中 在对其进行softmax分类即可 模型如下图 代码 class RNN nn Module def init
  • STM32 - 利用SPI接口读写FLASH编程实践

    1 SPI 固件库介绍 可以直接查看 F103固件库手册 只有英文没有中文 chm 找到SPI章节 相关信息都在这里 初始化结构体及函数定义在库文件 stm32f4xx spi h 及 stm32f4xx spi c 中 编程 时我们可以结
  • 【Shell案例】【for循环、seq生成】3、输出7的倍数

    描述写一个 bash脚本以输出数字 0 到 500 中 7 的倍数 0 7 14 21 的命令 方法1 in方式循环 if的括号是中括号 中间的条件要有空格 循环体用do和done配对 判断用if和fi配对 循环条件内不用加 echo的时候
  • Canal报错:Could not find first log file name in binary log index file

    解决方案 rm home admin canal server conf example meta dat 然后重启 home admin canal server bin restart sh
  • RecyclerView实现九宫格和点击事件

    想要实现的效果如下 开始界面 点击界面展示 在屏幕中间弹出一个对话框 效果就如同将图片放大一样 不过当然 这里的图片放大并非真正意义上的拉伸 而是展示出较大的那张图片 若是不打算用两张图片 也可以自定义大小 这里因为只是简单的demo 也为
  • 异常:java lang AbstractMethodError

    通常在尝试调用抽象方法时抛出此 java lang AbstractMethodError 通常 此错误是在编译时本身识别的 如果在运行时抛出此错误 则该类必须不兼容 与先前存在的类不兼容 更改 因此 它是IncompatibleClass
  • 嵌入式 Linux 入门 环境篇(四、必备开发工具安装)

    嵌入式 Linux入门 环境篇第四课 开发工具软件的安装与说明 by 矜辰所致 前言 前面的环境篇我们把开发的基本环境安装好了 Ubuntu虚拟机 网络配置 为了从 0 开始说明 还特意买了一台新电脑 就问是不是不将就 在我们接下来做嵌入式