致命错误:modbus.h:没有这样的文件或目录

Posted

技术标签:

【中文标题】致命错误:modbus.h:没有这样的文件或目录【英文标题】:Fatal error: modbus.h: No such file or directory 【发布时间】:2014-05-12 13:00:37 【问题描述】:

我预计要让我的程序在 Linux 上使用库 libmodbus 会遇到很多困难。

我已经使用命令sudo make install 和 make 之后安装了 libmodbus,但问题是当我想在我的 C 程序中链接库时。

我现在的 Makefile 是这样的:

all: test
test: main.o com.o
  gcc main.o com.o -o test

main.o: main.c
    gcc -c main.c -o main.o

com.o: com.c
    gcc -c com.c -Wl,-rpath=/usr/local/lib -Wl,LIBDIR -o com.o

clean:
    rm -rf *o test

在我的文件 com.c 中,我像这样包含文件 modbus.h:

#include <modbus.h>

我总是得到错误:

fatal error: modbus.h: No such file or directory.

如果在我进行安装时它可以提供帮助,代码会返回:

如果您碰巧想链接已安装的库 在给定目录 LIBDIR 中,您必须使用 libtool,并且 指定库的完整路径名,或使用“-LLIBDIR” 在链接期间标记并至少执行以下操作之一:

在执行期间将 LIBDIR 添加到 `LD_LIBRARY_PATH' 环境变量中 在链接期间将 LIBDIR 添加到 `LD_RUN_PATH' 环境变量中 使用 `-Wl,-rpath -Wl,LIBDIR' 链接器标志 让您的系统管理员将 LIBDIR 添加到 `/etc/ld.so.conf'

【问题讨论】:

当您克服创建 main.ocom.o 文件的障碍时,请参阅 Compiling a progam that includes libmodbus in C。 【参考方案1】:

modbus.h 似乎不在标准包含目录中。 您应该将 -I/&lt;includes_path&gt; 标志添加到 gcc 选项中。

我想在这里:

gcc -I/<include_dir_path> -c com.c -Wl,-rpath=/usr/local/lib -Wl,LIBDIR -o com.o

【讨论】:

问题是,即使在源代码上手动包含 -I 我也会收到另一个错误,例如 main.o 文件无法识别。我得到 collect2: ld returned 1 exit status 这不是我有另一个错误,这是因为我已经尝试过这个解决方案并且在谷歌上他们说我必须将 makefile 与库链接,而不是源代码所以“-I 好的,但是所描述的错误完全是预处理错误,而不是链接错误。如果你给标题一个完整的路径,你有什么错误? -Wl, 选项对于创建目标文件 (com.o) 并不重要。它们是链接器的指令,在创建可执行文件时运行。当前为gcc main.o com.o -o test 的行中将需要它们。不过,-I 的建议对于创建目标文件是 100% 正确的。

以上是关于致命错误:modbus.h:没有这样的文件或目录的主要内容,如果未能解决你的问题,请参考以下文章

致命错误:glib.h:使用 vscode 和 mingw 时没有这样的文件或目录

致命错误 C1083:无法打开包含文件:'boost/regex.hpp':没有这样的文件或目录

致命错误:Python.h:没有这样的文件或目录

收到“致命错误 C1083:无法打开包含文件:'gxall.h':没有这样的文件或目录”[重复]

致命错误:sdl.h:没有这样的文件或目录

致命错误 C1083:无法打开包含文件:'boost/config.hpp':没有这样的文件或目录