我希望我的程序在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和 指定库的完整路径名,或使用&#39; -LLIBDIR&#39; 在链接期间标记并至少执行以下操作之一:
- 将LIBDIR添加到`LD_LIBRARY_PATH&#39;执行期间的环境变量
- 将LIBDIR添加到`LD_RUN_PATH&#39;链接期间的环境变量
- 使用`-Wl,-rpath -Wl,LIBDIR&#39;链接器标志
- 请系统管理员将LIBDIR添加到`/etc/ld.so.conf'
答案 0 :(得分:2)
似乎modbus.h
不在标准包含目录中。
您应该将-I/<includes_path>
标志添加到gcc选项。
我想这里:
gcc -I/<include_dir_path> -c com.c -Wl,-rpath=/usr/local/lib -Wl,LIBDIR -o com.o