链接 editline 并编译

如果你使用前面我们提供的命令行来编译这个程序,你会得到类似于下面的错误,因为在使用之前,你必须先在电脑上安装 editline 库。

fatal error: editline/readline.h: No such file or directory #include <editline/readline.h>

在 Mac 上,editline 包含在 Command Line Tools 中,安装方法我们在第二章有说明。安装完后,可能还是会出现头文件不存在的编译错误。这时,可以移除 #include <editline/history.h> 这行代码,再试一次。

在 Linux 上,可以使用 sudo apt-get install libedit-dev 来安装 editline。在 Fedora 上,使用 su -c "yum install libedit-dev*" 命令安装。

一旦你安装好了 editline,你可以再次编译试一下。然后将会得到如下的错误:

  1. undefined reference to `readline'
  2. undefined reference to `add_history'

这是因为没有将 editline 链接到程序中。我们需要使用 -ledit 标记来完成链接,用法如下:

cc -std=c99 -Wall prompt.c -ledit -o prompt

再次运行程序,就可以自由地编辑输入的文字了!

为什么我的程序还是不能编译?

在有些系统上,editline 的安装、包含、链接的方式可能会有些许差别,请善用搜索引擎哦。