嵌入式Linux(树莓派)环境设置和交叉编译

一、VNC Viewer远程连接树莓派

1. 工具下载

  1. 树莓派
    https://www.raspberrypi.org/downloads/raspbian/
  2. 格式化
  3. VNC Viewer
    https://www.realvnc.com/en/connect/download/viewer/
  4. 远程工具putty
    https://www.chiark.greenend.org.uk/~sgtatham/putty/

2. SD卡格式化

  1. SB插入读卡器,读卡器插入电脑
    在这里插入图片描述
  2. 格式化SD卡
    在这里插入图片描述

3. 烧录

  1. 烧录文件
  2. choose os -> 选择格式化SD卡,写入
    在这里插入图片描述
    在这里插入图片描述
  3. 完成烧录操作

4. 网络配置

  1. 启动烧录SD卡
  2. boot目录创建ssh空文件
  3. 修改文本文件,添加代码
country=CN
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1

network={
	ssid="IQ"
	psk="qwe18754506381"
	key_mgmt=WPA-PSK
	priority=1
}
  1. 添加成功取出SD卡,插入树莓派
  2. 树莓派接电,查看树莓派ip地址

5. putty远程连接

  1. putty,Host Name输入ip地址,“open”打开
    在这里插入图片描述
    在这里插入图片描述
  2. 输入用户密码
  3. 开始树莓派VNC服务,sudo raspi-config配置VNC
    在这里插入图片描述
    在这里插入图片描述
  4. 选择“Interfacing Options” -> “Select”。
  5. 选择“VNC” -> “Select”。
  6. “The VNC server is enabled”–>“OK”
  7. “Advanced Options” -> “Select
  8. “Resolution” -> “Select”。
  9. “DMT Mode 16”
  10. “Finish”
  11. 树莓派用户与权限设置
    • 添加用户 sudo useradd usr1
    • 修改密码 sudo passwd usr1
  12. 给用户添加到sudoer用户,让他能够执行sudo命令
    • sudo passwd root:给root用户授予密
    • su:登录root用户
    • sudo adduser usr1 sudo:添加到sudoers文件

6. VNC Viewer界面显示

  1. VNC Viewer安装
    • 选择英文版本
      在这里插入图片描述
    • 执行默认操作,同意协议
    • 完成安装
  2. VNC Viewer使用
    • 首先在最上面输入树莓派的IP地址,接着在弹出的界面中输入Username,Password,点击OK 在这里插入图片描述

二、交叉编译实现

1. 简介

交叉编译是指从一台宿主机上,编译出其它不同平台的机器上的可执行程序的过程,需要使用到交叉工具链。

2. 架构实现

  1. arch命令判断系统架构
    https://developer.arm.com/downloads/-/gnu-a
  2. 树莓派aarch64架构,Ubuntu18 X86_64
    在这里插入图片描述
  3. 工具链下载解压
    在这里插入图片描述
  4. CMake交叉编译
cmake_minimum_required(VERSION 3.5) 
​
project(crosspro1)
​
add_executable(crosspro1
    main.cpp
)
#include "include.h"int main()
{
    std::cout << "Cross compile." << std::endl;
}

在这里插入图片描述
在这里插入图片描述
5. 在指定的build目录下使用make命令即可编译出可执行文件:make
6. 授权编译

chmod 777 execfile
./execfile

三、assert(断言)

代码:

#include "include.h"int main()
{
    FILE *fp = fopen("f.txt","r");
    assert(fp);char *str=NULL;
    ssize_t read;
    size_t len=0;
    while( (read=getline(&str,&len,fp)) !=-1)
    {
        printf("%s\n",str);
    }if(str)
        free(str);fclose(fp);
}
  1. C 标准库的 assert.h头文件提供了一个名为 assert 的宏,它可用于验证程序做出的假设,并在假设为假时输出诊断消息。
    已定义的宏 assert 指向另一个宏 NDEBUG,宏 NDEBUG 不是 <assert.h> 的一部分。如果已在引用 <assert.h> 的源文件中定义 NDEBUG 为宏名称
  2. 树莓派运行.c文件
    putty连接树莓派
    在这里插入图片描述
  3. 运行效果
    在这里插入图片描述
  4. 总结
    • 在函数开始处检验传入参数的合法性
      如:
	int resetBufferSize(int nNewSize)
	{
	//功能:改变缓冲区大小,
	//参数:nNewSize 缓冲区新长度
	//返回值:缓冲区当前长度
	//说明:保持原信息内容不变 nNewSize<=0表示清除缓冲区
	assert(nNewSize >= 0);
	assert(nNewSize <= MAX_BUFFER_SIZE);
	...
	}
  1. 每个assert只检验一个条件,因为同时检验多个条件时,如果断言失败,无法直观的判断是哪个条件失败
  2. 不能使用改变环境的语句,因为assert只在DEBUG个生效
  3. assert和后面的语句应空一行,以形成逻辑和视觉上的一致感
  4. 部分情况下,assert不能代替条件过滤

参考

树莓派无需显示屏的VNC Viewer方式的远程连接
VNC Viewer方式的远程连接树莓派
树莓派环境配置,并在Ubuntu18.04上配置交叉编译环境
Linux和Windows中的assert断言
assert 断言用法总结

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值