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

该问题出现的原因:

由于kermitroot用户的应用程序,因此在执行的时候不会在家目录~/下匹配.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的更多相关文章

  1. ubuntu10.04编译安装LAMP

    ubuntu10.04编译安装LAMP以及简单wordpress的使用 : http://linuxme.blog.51cto.com/1850814/971631 一.源码安装LAMP 网上有一堆关 ...

  2. Ubuntu14.04编译安装mysql5.6.26

    Ubuntu14.04编译安装mysql5.6.26 (1)安装编译源码需要的包 sudo apt-get install make cmake gcc g++ bison libncurses5-d ...

  3. 对<< ubuntu 12.04编译安装linux-3.6.10内核笔记>>的修正

    前题: 在前几个月的时候,写了一篇笔记,说的是kernel compile的事情,当时经验不足,虽说编译过了,但有些地方写的有错误--因为当时的理解是有错误的.今天一一更正,记录如下: 前文笔记链接: ...

  4. Ubuntu16.04编译安装php

    #Ubuntu16.04编译安装php Ubuntu16.04上面搭建基于Nginx的php服务.Nginx使用apt直接安装的. sudo apt install nginx php的安装部署步骤主 ...

  5. ubuntu 20.04 编译安装 p 详解

    事情的起因 实验需要安装 p4 环境 我考虑到我自己的电脑性能不足,因此打算在本机安装 github上官方仓库的安装教程老旧,都是在 ubuntu14.04或者ubuntu16.04 我长时间用的li ...

  6. ubuntu14.04 编译安装gcc-5.3.0

    最近编译个源码,要求对C++14的支持了,就GCC的编译安装最新的5.3.0,整个过程以root用户进行. 1.下载GCC源码,属于事后文档整理,已经不知道从哪下载了. 2.解压:tar -zxvf ...

  7. ubuntu16.04编译安装mysql-boost-5.7.21并编译成php扩展测试与使用

    我之前的文章已经改造了自定义MVC框架中的工具类(验证码,图片上传,图像处理,分类)4个类,接下来,就要改造模型类,模型类肯定要连接数据库,由于我的Ubuntu Linux是裸装的php(目前只编译了 ...

  8. ubuntu14.04 编译安装highpoint rocketraid 2720驱动

    highpoint官方只有ubuntu12.10驱动,对于ubuntu14.04或者12.04,需要手工编译安装驱动. 基本步骤: 1.下载rocketraid 2720驱动源代码 2.在一台装有ub ...

  9. Ubuntu16.04编译安装Redis Desktop Manager

    Redis Desktop Manager for OSX&Ubuntu 的安装版是收费的, 如果自己编译则是免费的. 安装过程参考官方提供的文档  http://docs.redisdesk ...

随机推荐

  1. DVWA SQL-injection 附python脚本

    SQL-Injection low等级 首先我们将dvwa等级调到low 如图 接下来选择SQL Injection,并在提交框中输入正常值1,查看返回结果 接下来检测是否存在注入,分别输入 1' a ...

  2. 面试官:讲讲Redis的五大数据类型?如何使用?(内含完整测试源码)

    写在前面 最近面试跳槽的小伙伴有点多,给我反馈的面试情况更是千差万别,不过很多小伙伴反馈说:面试中的大部分问题都能够在我的公众号[冰河技术]中找到答案,面试过程还是挺轻松的,最终也是轻松的拿到了Off ...

  3. UCanCode发布升级E-Form++可视化源码组件库2020全新版 !

    2020年. 中国.成都 UCanCode发布升级E-Form++可视化源码组件库2020全新版 ! --- 全面性能提升,UCanCode有史以来最强大的版本发布! E-Form++可视化源码组件库 ...

  4. HTTP 的前世今生,那些不为人知的秘密

    每个时代,都不会亏待会学习的人. 大家好,我是 yes. HTTP 协议在当今的互联网可谓是随处可见,一直默默的在背后支持着网络世界的运行,对于我们程序员来说 HTTP 更是熟悉不过. 平日里我们都说 ...

  5. vant实现下拉多选组件

    1.最近需要做一个移动端多选的功能,发现vant上没有多选的下拉组件,于是决定写一个,样式如下 调用部分传入值 propsselect-data-opts 传入list数据, disabled 下拉是 ...

  6. Python基本数据类型详细介绍

    Python提供的基本数据类型主要有:布尔类型.整型.浮点型.字符串.列表.元组.集合.字典等等 1.空(None)表示该值是一个空对象,空值是Python里一个特殊的值,用None表示.None不能 ...

  7. 【编程开发】Python---列表

    ERROR:错误 waring:警告,还没到犯错的地步 print(r'\n')  r"字符串",字符串里的所有字符都不转义 str = "abcdef" 如果 ...

  8. C++中数组作为形参的方法

    转载:https://blog.csdn.net/qq_33374294/article/details/90769668 原链接:https://www.cnblogs.com/abella/p/1 ...

  9. node-macaddress

    下载 node-macaddressnode-macaddress 检索Linux.OS X和Windows中的MAC地址. 关于MAC地址的一个常见误解是,每个主机只有一个MAC地址, 虽然一个主机 ...

  10. vue项目打包-2-九五小庞

    vue项目打包 一.终端运行命令 npm run build 二.打包成功的标志与项目的改变,如下图: 3.点击index.html,通过浏览器运行,出现以下报错,如图: 四.那么应该如何修改呢?具体 ...