致命错误: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.o
和 com.o
文件的障碍时,请参阅 Compiling a progam that includes libmodbus
in C。
【参考方案1】:
modbus.h
似乎不在标准包含目录中。
您应该将 -I/<includes_path>
标志添加到 gcc 选项中。
我想在这里:
gcc -I/<include_dir_path> -c com.c -Wl,-rpath=/usr/local/lib -Wl,LIBDIR -o com.o
【讨论】:
问题是,即使在源代码上手动包含 -I-Wl,
选项对于创建目标文件 (com.o
) 并不重要。它们是链接器的指令,在创建可执行文件时运行。当前为gcc main.o com.o -o test
的行中将需要它们。不过,-I
的建议对于创建目标文件是 100% 正确的。以上是关于致命错误:modbus.h:没有这样的文件或目录的主要内容,如果未能解决你的问题,请参考以下文章
致命错误:glib.h:使用 vscode 和 mingw 时没有这样的文件或目录
致命错误 C1083:无法打开包含文件:'boost/regex.hpp':没有这样的文件或目录