ubuntu20.04 编译安装ckermit
ubuntu20.04编译安装ckermit
我呢之前一直使用的是ubuntu18.04,最近在安装了某个软件之后,再加上自己的操作不当最终导致ubuntu系统卡死无法进入桌面环境,早就想更新20.04的我,终于迎来了换最新版ubuntu的理由
常规安装ckermit过程(通过apt下载方式)
请参考“Linux安装kermit”这篇文章。本文主要介绍通过源码安装方式。
源码方式安装ckermit
一、源码下载
The Kermit Project | Columbia University  注:通过哥伦比亚大学下载常常会因为网络原因导致下载速度过慢,甚至无法下载
这里提供已经下载好的最新版本源码包:
链接: C-Kermit 9.0 source
提取码: 3ssb
二、编译C-kermit Source
解压源码压缩包
unzip x.zip
ls
ckc302.txt  ckcftp.c  ckcnet.c  ckcssl.h  ckcxla.h  ckuath.h  ckufio.c   ckusig.h  ckuus6.c  ckuver.h  ckvioc.c    ckvrms.h  COPYING.TXT
ckcasc.h    ckcker.h  ckcnet.h  ckcsym.h  ck_des.c  ckucmd.c  ckuker.nr  ckutio.c  ckuus7.c  ckuxla.c  ckvioc.h    ckvrtl.c  makefile
ckcdeb.h    ckclib.c  ckcpro.c  ckctel.c  ck_ssl.c  ckucmd.h  ckupty.c   ckuus2.c  ckuusr.c  ckuxla.h  ckvker.com  ckvrtl.h  x.zip
ckcfn2.c    ckclib.h  ckcpro.w  ckctel.h  ck_ssl.h  ckucns.c  ckupty.h   ckuus3.c  ckuusr.h  ckvcon.c  ckvker.mms  ckvtio.c
ckcfn3.c    ckcmai.c  ck_crp.c  ckcuni.c  ckuat2.h  ckucon.c  ckuscr.c   ckuus4.c  ckuusx.c  ckvcvt.c  ckvold.c    ckvvms.h
ckcfns.c    ckcmdb.c  ckcsig.h  ckcuni.h  ckuath.c  ckudia.c  ckusig.c   ckuus5.c  ckuusy.c  ckvfio.c  ckvold.com  ckwart.c
编译源码
make linux
出现错误
In file included from ckucmd.c:41:
ckucmd.c: In function ‘cmdconchk’:
ckucmd.c:7385:48: error: ‘FILE’ {aka ‘struct _IO_FILE’} has no member named ‘_cnt’
 7385 |     debug(F101,"cmdconchk stdin->_cnt","",stdin->_cnt);
      |                                                ^~
ckcdeb.h:5129:51: note: in definition of macro ‘debug’
 5129 | ((void)(deblog?dodebug(a,b,(char *)(c),(CK_OFF_T)(d)):0))
      |                                                   ^
ckucmd.c:7386:14: error: ‘FILE’ {aka ‘struct _IO_FILE’} has no member named ‘_cnt’
 7386 |     x = stdin->_cnt;
      |              ^~
打开报错文件ckucmd.c,定位到报错行
  7371 /* Here we must look inside the stdin buffer - highly platform dependent */
  7372
  7373 #ifdef _IO_file_flags           /* Linux */
  7374     x = (int) ((stdin->_IO_read_end) - (stdin->_IO_read_ptr));
  7375     debug(F101,"cmdconchk _IO_file_flags","",x);
  7376 #else  /* _IO_file_flags */
  7377 #ifdef USE_FILE_CNT         /* Traditional */
  7378 #ifdef VMS
  7379     debug(F101,"cmdconchk (*stdin)->_cnt","",(*stdin)->_cnt);
  7380     x = (*stdin)->_cnt;
  7381 #else
  7382 #ifdef NOARROWKEYS
  7383     debug(F101,"cmdconchk NOARROWKEYS x","",0);
  7384 #else
  7385     debug(F101,"cmdconchk stdin->_cnt","",stdin->_cnt);
  7386     x = stdin->_cnt;
  7387 #endif /* NOARROWKEYS */
  7388 #endif /* VMS */
  7389     if (x == 0) x = conchk();
  7390     if (x < 0) x = 0;
  7391 #else  /* USE_FILE_CNT */
  7392 #ifdef USE_FILE__CNT            /* HP-UX */
  7393     debug(F101,"cmdconchk stdin->__cnt","",stdin->__cnt);
  7394     x = stdin->__cnt;
  7395     if (x == 0) x = conchk();
  7396     if (x < 0) x = 0;
  7397 #else  /* USE_FILE_CNT */
  7398 #ifdef USE_FILE_R           /* FreeBSD, OpenBSD, etc */
  7399     debug(F101,"cmdconchk stdin->_r","",stdin->_r);
  7400     x = stdin->_r;
  7401     if (x == 0) x = conchk();
  7402     if (x < 0) x = 0;
  7403
  7404     /* Fill in any others here... */
  7405
  7406 #endif /* USE_FILE_R */
  7407 #endif /* USE_FILE__CNT */
  7408 #endif /* USE_FILE_CNT */
  7409 #endif /* _IO_file_flags */
在7371行的注释告诉我们要关注stdin buffer,这个buf(struct _iobuf也就是FILE结构体)和平台高度相关。而Linux平台下的stdin结构体没有_cnt成员,该成员在MinGW和MSVC编译环境中才有。因此这里应该执行#ifdef _IO_file_flags下的代码,这里需要自己把这个宏添加进去。
注:[参考链接]https://blog.mxslly.com/archives/172.html
三、解决错误
进入makefile报错行[6054],及linuxa的标签,在CFLAGS后添加-D_IO_file_flags。
 linuxa:
     @echo 'Making C-Kermit $(CKVER) for Linux 1.2 or later...'
     @echo 'IMPORTANT: Read the comments in the linux section of the'
     @echo 'makefile if you have trouble.'
     $(MAKE) xermit KTARGET=$${KTARGET:-$(@)} "CC = gcc" "CC2 = gcc" \
     "CFLAGS = -O -DLINUX -pipe -funsigned-char -DFNFLOAT -DCK_POSIX_SIG \
     -DCK_NEWTERM -DTCPSOCKET -DLINUXFSSTND -DNOCOTFMC -DPOSIX -D_IO_file_flags\
     -DUSE_STRERROR $(KFLAGS)" "LNKFLAGS = $(LNKFLAGS)" \
     "LIBS = $(LIBS) -lm"
四、再次编译
再次执行make linux进行编译,编译成功会生成wermit可执行文件,将该可执行文件移动到/usr/local/bin目录下(为了方便使用)。
make linux
#注:该命令需要root权限
cp wermit /usr/local/bin/kermit
五、编辑.kermrc(在家目录~/下完成)
$ cd ~
$ vim .kermrc
#.kermrc文件内容,一般USB转串口会分配为/dev/ttyuSB0,如果是用串口线连接主机的话,需要设置为/dev/ttyS0,设备名根据自己电脑识别的自行修改。
set line          /dev/ttyUSB0
set speed         115200
set carrier-watch off
set handshake     none
set flow-control none
robust
set file type     bin
set file name     lit
set rec pack      1000
set send pack     1000
set window        5
编辑完成保存退出后,若串口设置这正确,执行 sudo kermit一直出现如下内容。
?SET SPEED has no effect without prior SET LINE
Sorry, you must SET LINE or SET HOST first
该问题出现的原因:
由于kermit是root用户的应用程序,因此在执行的时候不会在家目录~/下匹配.kermrc文件。
只需要将配置文件.kermrc复制到root目录下即可
#注:该命令需要root权限
sudo mv ~/.kermrc /root/
到此,有关Ubuntu 20.04配置安装ckermit的文章结束
help
#查看当前设备识别到的串口
ls /dev/tty*
#正确配置kermrc后,运行kermit命令
sudo kermit
#打开并连接串口,已经进入kermit界面输入`c`回车即可
#退出到kermit命令行:在连接到串口的情况下使用组合键`Ctrl + \`之后按下`c`键,即可进入kermit的命令行界面,再输入`q`回车即可退出kermit程序
#退出到terminal命令:在连接到串口情况下使用组合见`Ctrl + \`之后按下`q`建,即可直接退出到terminal命令行界面
												
											ubuntu20.04 编译安装ckermit的更多相关文章
- ubuntu10.04编译安装LAMP
		
ubuntu10.04编译安装LAMP以及简单wordpress的使用 : http://linuxme.blog.51cto.com/1850814/971631 一.源码安装LAMP 网上有一堆关 ...
 - Ubuntu14.04编译安装mysql5.6.26
		
Ubuntu14.04编译安装mysql5.6.26 (1)安装编译源码需要的包 sudo apt-get install make cmake gcc g++ bison libncurses5-d ...
 - 对<< ubuntu 12.04编译安装linux-3.6.10内核笔记>>的修正
		
前题: 在前几个月的时候,写了一篇笔记,说的是kernel compile的事情,当时经验不足,虽说编译过了,但有些地方写的有错误--因为当时的理解是有错误的.今天一一更正,记录如下: 前文笔记链接: ...
 - Ubuntu16.04编译安装php
		
#Ubuntu16.04编译安装php Ubuntu16.04上面搭建基于Nginx的php服务.Nginx使用apt直接安装的. sudo apt install nginx php的安装部署步骤主 ...
 - ubuntu 20.04 编译安装 p 详解
		
事情的起因 实验需要安装 p4 环境 我考虑到我自己的电脑性能不足,因此打算在本机安装 github上官方仓库的安装教程老旧,都是在 ubuntu14.04或者ubuntu16.04 我长时间用的li ...
 - ubuntu14.04 编译安装gcc-5.3.0
		
最近编译个源码,要求对C++14的支持了,就GCC的编译安装最新的5.3.0,整个过程以root用户进行. 1.下载GCC源码,属于事后文档整理,已经不知道从哪下载了. 2.解压:tar -zxvf ...
 - ubuntu16.04编译安装mysql-boost-5.7.21并编译成php扩展测试与使用
		
我之前的文章已经改造了自定义MVC框架中的工具类(验证码,图片上传,图像处理,分类)4个类,接下来,就要改造模型类,模型类肯定要连接数据库,由于我的Ubuntu Linux是裸装的php(目前只编译了 ...
 - ubuntu14.04 编译安装highpoint rocketraid 2720驱动
		
highpoint官方只有ubuntu12.10驱动,对于ubuntu14.04或者12.04,需要手工编译安装驱动. 基本步骤: 1.下载rocketraid 2720驱动源代码 2.在一台装有ub ...
 - Ubuntu16.04编译安装Redis Desktop Manager
		
Redis Desktop Manager for OSX&Ubuntu 的安装版是收费的, 如果自己编译则是免费的. 安装过程参考官方提供的文档 http://docs.redisdesk ...
 
随机推荐
- E-Form++ for Windows CE源码库2020,嵌入式开放源码!
			
E-Form++ for Windows CE源码库2020! 现在就把这个下载到您的Windows CE中,体验极致HMI触摸. Windows CE评估版下载! 1. E-Form++ for ...
 - Spring--AOP的见解
			
AOP是指面向切面编程,与JAVA中的动态代理有很深的渊源. 在使用Spring框架时,AOP编程能简化很多繁杂的步骤,精简代码. 切面:横切关注点(跨越程序中多个模块的功能),被模块化的特殊对象,也 ...
 - vue项目中视频播放结束返回首页出现1秒左右的白屏问题
			
vue项目的性能优化问题,一直以来都是大家比较关注的. 近日负责的项目中,使用了SignalR实时通讯,客户端中点击发起播放视频的请求到服务器,服务器接到请求后再调用前端的播放视频方法,以此来达到播放 ...
 - CUP的MESI协议
			
MESI协议中的状态 CPU中每个缓存行(caceh line)使用4种状态进行标记(使用额外的两位(bit)表示): M: 被修改(Modified) 该缓存行只被缓存在该CPU的缓存中,并且是被修 ...
 - 树莓派3B+安装64位ubuntu系统和docker工具
			
想在树莓派3B上安装一些64位应用(例如64位JDK),因此首先要安装64位的操作系统,今天咱们就一起来实战: 原文地址:https://blog.csdn.net/boling_cavalry/ar ...
 - NX二次开发-C#使用DllImport调用libufun.dll里的UF函数(反编译.net.dll)调用loop等UF函数
			
在写这篇文章的时候,我正在头晕,因为下班坐车回家,有些晕车了.头疼的要死.也吃不下去饭. 版本:NX11+VS2013 最近这一年已经由C++过度到C#,改用C#做应用程序开发和NX二次开发. C#在 ...
 - 快速删除XMind指定层级的方法
			
在使用xmind梳理知识点的时候,因为长期积累,单个文件的节点数可能超过1000个,层级可能超过6层.但在我们做文件分享时,可能只需要提供3层的思维导图,这时候就需要对子节点进行删除.原始的方法,就是 ...
 - Magicodes.IE 2.4版本发布
			
今天我们发布了2.4版本,这离不开大家对Magicodes.IE的支持,我们也对大家的意见以及需求不断的进行更新迭代,目前我们的发布频率平均在一周一个beta版本,一个月一个正式版本的更新,我们欢迎更 ...
 - Vuejs上传
			
下载 Vuejs上传Vuejs上传 多部分上传Vue组件. 上传器可以选择上传多部分的文件. 这是关于最大的上传尺寸,允许你上传大文件. 如果prop multiple为真,文件列表将在选择文件时呈现 ...
 - Docker镜像仓库Harbor部署
			
一.Harbor组件 组件 功能 harbor-adminserver 配置管理中心 harbor-db Mysql数据库 harbor-jobservice 负责镜像复制 harbor-log 记录 ...