GNU Readline 是一个开源的程序库,可以实现交互式的文本编辑功能。这里简单的笔记下如何编译和使用它。

CONTENTS

编译:

作者编译使用的linux版本是Ubuntu14.04×64版本。

首先从官网上下载下来压缩文件。这里作者下载的版本是readline-6.3.tar.gz。

根据INSTALL文件的介绍,输入命令如下:

cstriker1407@ubuntu1404x64:~$ tar -zxf readline-6.3.tar.gz  #解压缩tar包

cstriker1407@ubuntu1404x64:~$ cd readline-6.3/

cstriker1407@ubuntu1404x64:~/readline-6.3$ ./configure #生成头文件

cstriker1407@ubuntu1404x64:~/readline-6.3$ make everything  #编译所有文件

cstriker1407@ubuntu1404x64:~/readline-6.3$ sudo make install #使用root权限,将编译好的库拷贝到系统中。

如果过程中出现了错误

/usr/bin/ld: cannot find -ltermcap

可以安装一个软件,命令如下:

cstriker1407@ubuntu1404x64:~/readline-6.3$ sudo apt-get install libncurses5-dev

使用:

压缩包中附带了很多例子,这里看一个最简单的:

cstriker1407@ubuntu1404x64:~/readline-6.3$ cd examples/

cstriker1407@ubuntu1404x64:~/readline-6.3/examples$ ls

autoconf hist_erasedups histexamp.o Makefile rl.c rlcat.c rlfe rltest.c rlwrap-0.30.tar.gz

excallback.c hist_erasedups.c hist_purgecmd Makefile.in rl-callbacktest rlcat.o rl-fgets.c rltest.o

fileman hist_erasedups.o hist_purgecmd.c manexamp.c rl-callbacktest.c rlevent rl.o rlversion

fileman.c histexamp hist_purgecmd.o readlinebuf.h rl-callbacktest.o rlevent.c rlptytest.c rlversion.c

fileman.o histexamp.c Inputrc rl rlcat rlevent.o rltest rlversion.o

cstriker1407@ubuntu1404x64:~/readline-6.3/examples$ ./rlversion

6.3

这里分析下rlversion的源码,有删改:

#if defined (HAVE_CONFIG_H)

#include

#endif

#include

#include

#include "posixstat.h"

#ifdef HAVE_STDLIB_H

#include

#else

extern void exit();

#endif

#ifdef READLINE_LIBRARY

#include "readline.h"

#else

#include

#endif

main()

{

printf ("%s\n", rl_library_version ? rl_library_version : "unknown");

exit (0);

}

由于是下载的源码编译,这里宏HAVE_CONFIG_H和READLINE_LIBRARY在makefile里面被定义了。

如果是直接安装编译好的readline库,应该可以省掉。

来看下examples下面的makefile,有删改

RL_LIBRARY_VERSION = 6.3

SHELL = /bin/sh

RM = rm -f

prefix = /usr/local

exec_prefix = ${prefix}

datarootdir = ${prefix}/share

bindir = ${exec_prefix}/bin

srcdir = .

datadir = ${datarootdir}

top_srcdir = ..

#BUILD_DIR = .

BUILD_DIR = /home/cstriker1407/readline-6.3

installdir = $(datadir)/readline

INSTALL = /usr/bin/install -c

INSTALL_PROGRAM = ${INSTALL}

INSTALL_DATA = ${INSTALL} -m 644

EXEEXT =

OBJEXT = o

# Support an alternate destination root directory for package building

DESTDIR =

DEFS = -DHAVE_CONFIG_H

CC = gcc

CFLAGS = -g -O

LOCAL_CFLAGS = -DREADLINE_LIBRARY -DRL_LIBRARY_VERSION='"$(RL_LIBRARY_VERSION)"'

CPPFLAGS =

INCLUDES = -I$(srcdir) -I$(top_srcdir) -I..

CCFLAGS = $(DEFS) $(LOCAL_CFLAGS) $(CPPFLAGS) $(INCLUDES) $(CFLAGS)

LDFLAGS = -g -L.. -L./lib/termcap

PURIFY =

READLINE_LIB = ../libreadline.a

HISTORY_LIB = ../libhistory.a

TERMCAP_LIB = -ltermcap

.c.o:

${RM} $@

$(CC) $(CCFLAGS) -c $<

SOURCES = rlversion.c

EXECUTABLES = rlversion$(EXEEXT)

OBJECTS = rlversion.o

OTHEREXE = rlptytest$(EXEEXT)

OTHEROBJ = rlptytest.o

all: $(EXECUTABLES)

everything: all

check:rlversion$(EXEEXT)

@echo Readline version: `rlversion$(EXEEXT)`

installdirs:

-$(SHELL) $(top_srcdir)/support/mkdirs $(DESTDIR)$(installdir)

install:installdirs

@for f in $(SOURCES); do \

$(RM) $(DESTDIR)$(installdir)/$$f ; \

$(INSTALL_DATA) $(srcdir)/$$f $(DESTDIR)$(installdir) ; \

done

uninstall:

@for f in $(SOURCES); do \

$(RM) $(DESTDIR)$(installdir)/$$f ; \

done

-rmdir $(DESTDIR)$(installdir)

rlversion$(EXEEXT): rlversion.o $(READLINE_LIB)

$(CC) $(LDFLAGS) -o $@ rlversion.o $(READLINE_LIB) $(TERMCAP_LIB)

clean mostlyclean:

$(RM) $(OBJECTS) $(OTHEROBJ)

$(RM) $(EXECUTABLES) $(OTHEREXE) *.exe

distclean maintainer-clean: clean

$(RM) Makefile

rlversion.o: rlversion.c

rlversion.o: $(top_srcdir)/readline.h

c语言readline库6,GNU Readline Library编译及简单分析相关推荐

  1. 深入浅出C/C++中的正则表达式库(一)--GNU Regex Library

    正则表达式(Regular Expressions),又被称为regex或regexp,是一种十分简便.灵活的文本处理工具.它可以用来精确地找出某文本中匹配某种指定规则的内 容.在linux下,gre ...

  2. 开源Go语言数值算法库 An open numerical library purely based on Go programming language

    目录 关于[goNum](https://github.com/chfenger/goNum) 安装环境 安装方法 算法 许可证书 致谢 关于goNum goNum是一款完全以Go语言为基础的开源数值 ...

  3. 编译c语言动态库,使用gcc、g++编译C/C++源程序,静态库和动态库创建方式

    后缀为.c的,gcc把它当作是C程序,而g++当作是c++程序: 后缀为.cpp的,两者都会认为是c++程序. 注意,虽然c++是c的超集,但是两者对语法的要求是有区别的. 编译阶段,g++会调用gc ...

  4. GNU Readline 库及编程简介【转】

    转自:https://www.cnblogs.com/hazir/p/instruction_to_readline.html 用过 Bash 命令行的一定知道,Bash 有几个特性: TAB 键可以 ...

  5. linux c read函数返回值,Linuxc - GNU Readline 库及编程简介

    GNU Readline 库及编程简介 简介 用过 Bash 命令行的一定知道,Bash 有几个特性: TAB 键可以用来命令补全 ↑ 或 ↓ 键可以用来快速输入历史命令 还有一些交互式行编辑快捷键: ...

  6. python readline_16.8. readline — GNU readline 接口 — Python 2.7.18 文档

    16.8.readline - GNU readline 接口¶ The readline module defines a number of functions to facilitate com ...

  7. readline库实现命令行自动补全

    Table of Contents part1: readline安装 part2:readline使用举例 part3: readline下的IO复用 http://m.blog.chinaunix ...

  8. python readline用法_python教程---GNU readline 接口用法

    readline 模块定义了许多方便从 Python 解释器完成和读取/写入历史文件的函数. 此模块可以直接使用,或通过支持在交互提示符下完成 Python 标识符的 rlcompleter 模块使用 ...

  9. Linux下使用readline库实现2048游戏

    一.背景 上一篇文章介绍了readline的基本用法,这一篇通过readline读取按键对2048游戏的c语言实现: 二.思路 2.1 游戏介绍 关于2048游戏,网上找了一下介绍,你可以点击这里在线 ...

最新文章

  1. 工作经验:Java 系统记录调用日志,并且记录错误堆栈
  2. TensorFlow1.8.0正式发布,Bug修复和改进内容都在这里了
  3. 剑桥加密资产研究的主要发现 金评媒JPM 09-19 00:00 金评媒(https://www.jpm.cn)编者按:研究发现,全球有 1876 人在加密资产行业中工作。其中最多的是在亚太地区工作,
  4. 关于C++中函数指针的使用(包含对typedef用法的讨论)
  5. 编写自动调试器以在测试执行期间捕获异常
  6. linux服务器无法登录,linux服务器账号密码正确无法登录-Go语言中文社区
  7. pythoncontinue函数_Python continue语句
  8. 什么是去中心化?交易所为什么要去中心化?
  9. 如何验证远程服务器上文件是否存在
  10. 《健康流言终结者》一句话总结
  11. ALTOVA XMLSPY使用,建xml文件,构建xpath和XQuery查询,xml和json格式转换
  12. python压缩HTML文件,python压缩javascript文件代码
  13. excel文件修复工具_TunesKit Video Repair下载_视频文件修复工具官方版下载[修复工具]...
  14. java计算机毕业设计商品货物信息管理系统源码+系统+数据库+lw文档+mybatis+运行部署
  15. SBIO | 浙大马忠华团队综述染色质重塑复合体SWI/SNF在植物-病原体互作中的作用...
  16. opencv实现魔幻笔效果
  17. 数字资产支付行业研究报告 | TokenInsight
  18. js对call 和apply的理解
  19. 【可见光室内定位】(一)概览
  20. NCBI中对所有原核生物ANI计算的统计结果简单讲解

热门文章

  1. 无聊的QQ,无聊的360
  2. 这三年失业的人,现在怎么样了?
  3. 16. 在新公司的悲剧开始
  4. 2022年最新前端学习路线图
  5. 全面了解 Grid 布局
  6. (附源码)计算机毕业设计SSM基于html的网上购物系统
  7. AAAI 2023 | 从谱的角度来看待(图)对比学习
  8. opengl打开jpeg图片
  9. 关于魔兽世界3.0下载了2.64G更新包后仍然提示需要下载4.6G文档的解决方法收藏
  10. OpenJudge-【4978】宠物小精灵之收服