【问题标题】:'readline/readline.h' file not found'readline/readline.h' 文件未找到
【发布时间】:2014-05-29 21:18:15
【问题描述】:

我已包含:

#include "stdio.h"    
#include <readline/readline.h>
#include <readline/history.h>

我的编译器包含标志

-lreadline

但我仍然收到错误消息:

fatal error: 'readline/readline.h' file not found

我正在尝试使用函数 readline();

这里有更详细的定义:http://linux.die.net/man/3/readline

【问题讨论】:

  • 您使用的是什么操作系统/版本?
  • 编译器查找包含文件的路径是什么? (通常,它包括/usr/include)。 readline/readline.h 是否存在于该路径中? (例如,/usr/include/readline/readline.h)。如果没有,请通过-I 添加正确的路径。 (例如,如果您在 /usr/local 中安装了 readline,请将 -I/usr/local/include 添加到编译器调用中。)
  • @TimCastelijns 2013 x86_64 x86_64 x86_64 GNU/Linux
  • @WilliamPursell 我不能包含任何与平台无关的本地文件,因为它必须在其他系统上使用,我无法控制安装的内容。
  • 实际上,我认为你可能是对的@WilliamPursell,谢谢

标签: c linux libreadline


【解决方案1】:

您引用的是 Linux 发行版,因此您需要安装 readline 开发库

在基于 Debian 的平台上,例如 Ubuntu,您可以运行:

sudo apt-get install libreadline-dev 

这应该在正确的位置安装正确的标题。

如果您使用带有yum 的平台,例如 SUSE,那么命令应该是:

yum install readline-devel

【讨论】:

  • 谢谢这个工作,但是当我删除 -lreadline 它停止工作,所以我不得不把它放回去。我正在使用 clang 编译,不确定这是否是我不得不离开它的原因在。我会在分钟时接受你的回答。时间到了。
  • @timeshift117 - 你说得对,它确实需要在那里。只是为了find你不需要链接任何东西的头文件,而是使用你需要链接readline库的函数。包含但不使用标题是没有意义的,所以我从答案中删除了它
  • 你能告诉我-dev是什么意思吗??
  • @SurajJain -dev-devel 后缀表示开发人员的源和标头。没有 dev 的包只包含编译的二进制文件。
【解决方案2】:

当我遇到完全相同的问题时,这个命令在 linux mint 上帮助了我

gcc filename.c -L/usr/include -lreadline -o filename

如果你多次编译,你可以使用别名 例如:

alias compilefilename='gcc filename.c -L/usr/include -lreadline -o filename'

【讨论】:

    猜你喜欢
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 2015-06-07
    • 2018-11-01
    • 1970-01-01
    • 2017-08-21
    • 1970-01-01
    • 2021-09-17
    相关资源
    最近更新 更多