嵌入式 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 入门 环境篇(四、必备开发工具安装) 的相关文章

  • 即使 makefile 和源代码存在,为什么“Build Project”在 Eclipse Helios CDT 中显示为灰色?

    我无法构建我的项目 我在 Eclipse Helios 中创建了一个新的 CDT 项目 并告诉它使用现有的源代码和 makefile 这两者都正确显示在 Package 和 Project 视图中 然而 项目 菜单中的 构建全部 和 构建项
  • 如何将推送的分支复制到另一个目录?

    我有一个分支叫master 生产 另一个称为development 当我从 master 推送提交时 post receive 挂钩执行 git work tree var www mywebsite com git dir var rep
  • 有关 Linux 内存类型的问题

    关于Linux内存我有以下问题 我知道活动内存是最常访问的内存部分 但是有人可以解释一下 linux 如何考虑将内存位置用于活动内存或非活动内存 主动存储器由哪些部分组成 磁盘 文件缓存是否被视为活动内存的一部分 有什么区别Buffers
  • 无法为 Python 3.4 创建工作虚拟环境

    I 安装Python 3 4 2 https docs python org 3 using unix html building python和我的 Linux Mint 17 1 中的 Virtualenv 12 0 5 然后我尝试创建
  • 我在哪里可以学习如何使 C++ 程序与操作系统 (Linux) 交互

    我是一个 C 初学者 我想创建与操作系统交互的小程序 使用 Kubuntu Linux 到目前为止 我还没有找到任何教程或手册来让 C 与操作系统交互 在 PHP 中 我可以使用命令 exec 或反引号运算符来启动通常在控制台中执行的命令
  • 测试linux下磁盘空间不足

    我有一个程序 当写入某个文件的磁盘空间不足时 该程序可能会死掉 我不确定是否是这种情况 我想运行它并查看 但我的测试服务器不会很快耗尽空间 有什么办法可以嘲笑这种行为吗 看起来没有任何方法可以在 Ubuntu 中设置文件夹 文件大小限制 并
  • Linux TCP服务器:在接受连接之前读取客户端的IP地址

    Related C Winsock API如何在接受连接之前获取连接客户端IP https stackoverflow com questions 716209 c winsock api how to get connecting cli
  • 使用netcat将unix套接字传输到tcp套接字

    我正在尝试使用以下命令将 unix 套接字公开为 tcp 套接字 nc lkv 44444 nc Uv var run docker sock 当我尝试访问时localhost 44444 containers json从浏览器中 它不会加
  • 原生 Linux 应用程序可像 ResHacker 一样编辑 Win32 PE

    我想运行自动修改 dll服务 用户提交特定的 dll 我在服务器上修改它 然后用户可以下载 dll的修改版本 是否有任何本机 Linux 应用程序提供常见的 Win32 PE 修改功能 例如图标 字符串 加速器 对话等 至少提供命令行或脚本
  • Docker DNS 设置

    我尝试使用自定义网络和 dos 设置创建 docker 容器 docker网络创建 driver bridge opt com docker network bridge enable ip masquerade true opt com
  • 是否有可能通过 mmap 匿名内存“打孔”?

    考虑一个使用大量大致页面大小的内存区域 例如 64 kB 左右 的程序 每个内存区域的寿命都相当短暂 在我的特定情况下 这些是绿色线程的替代堆栈 如何最好地分配这些区域 以便一旦该区域不再使用 它 们的页面可以返回到内核 天真的解决方案显然
  • 如何在两个不同帐户之间设置无密码身份验证

    我们可以在两台机器的两种不同用途之间设置无密码身份验证吗 例如 计算机A有用户A 计算机B有用户B 我们可以设置密码 ssh 以便计算机 A 上的用户 A 使用其用户帐户 A 登录计算机 B 谢谢你 如果我理解你的问题 你能设置一下吗ssh
  • 远程linux服务器到远程linux服务器大型稀疏文件复制 - 如何?

    我有两台 CentOS 5 4 服务器 每台服务器上都安装了 VMware Server 假设我始终对 vmware 虚拟机使用稀疏文件 将虚拟机文件从一台服务器复制到另一台服务器的最可靠 最快速的方法是什么 虚拟机的文件复制起来很痛苦 因
  • 如何仅将整个嵌套目录中的头文件复制到另一个目录,在复制到新文件夹后保持相同的层次结构

    我有一个目录 其中有很多头文件 h 和其他 o 和 c 文件以及其他文件 这个目录里面有很多嵌套的目录 我只想将头文件复制到一个单独的目录 并在新目录中保留相同的结构 cp rf oldDirectory newDirectory将复制所有
  • 在 Ubuntu 16.04 中创建虚拟主机

    我已经开始在 laravel 中工作并使用 lampp 我看过很多使用虚拟主机来制作用户友好的 url 的教程 我想在 Ubuntu 16 04 上执行此操作 以下教程对我不起作用 https ourcodeworld com articl
  • 有没有人在 Ubuntu 16.04 LTS 上安装 QGIS

    按照以下网址提供的说明进行操作 这一页 http www qgis org en site forusers alldownloads html并收到以下错误 以下软件包具有未满足的依赖关系 python qgis Depends pyth
  • 使用命令行将 MediaWiki 维基文本格式转换为 HTML

    我倾向于编写大量文档 因此 MediaWiki 格式对我来说很容易理解 而且比编写传统 HTML 节省了我很多时间 然而 我也写了一篇博客 发现一直从键盘切换到鼠标来输入正确的 HTML 标签会增加很多时间 我希望能够使用 Mediawik
  • 是否有可能在linux中找到包含特定文本的文件?

    考虑这种情况 我在文件夹 Example 下有很多文件 如果我需要找到一个包含特定短语 如 Class Example 的文件 我该如何使用 Linux shell 来做到这一点 linux中有类似 定位 的函数可以做到这一点吗 Thank
  • Bash 脚本 - 迭代 find 的输出

    我有一个 bash 脚本 其中需要迭代 find 命令输出的每一行 但似乎我正在迭代 find 命令中的每个单词 以空格分隔 到目前为止我的脚本看起来像这样 folders find maxdepth 1 type d for i in f
  • 无关的库链接

    我有一个可能有点愚蠢的问题 因为我很确定我可能已经知道答案了 假设你有静态库A 动态共享库B和你的linux下的程序C 假设库 A 调用库 B 中的函数 并且您的程序调用库 A 中的函数 现在假设 C 在 A 中调用的所有函数都不使用 B

随机推荐

  • 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 开始说明 还特意买了一台新电脑 就问是不是不将就 在我们接下来做嵌入式