注意一下:如果只是使用libmodbus编程一般可能不需要进行如下配置。直接把.h和.cpp一起编译就行了。
https://github.com/stephane/libmodbus
在上面的地址下载库。
然后安装以下工具:
sudo apt-get install autoconf
sudo apt-get install automake
sudo apt-get install libtool
把安装包解压到某目录下,cd 到此目录
cd ~/libmodbus-master
运行
./autogen.sh
生成脚本configure
./configure && make install //可能权限不够,在前面加sudo
显示
----------------------------------------------------------------------
Libraries have been installed in:
/usr/local/lib
If you ever happen to want to link against installed libraries
in a given directory, LIBDIR, you must either use libtool, and
specify the full pathname of the library, or use the '-LLIBDIR'
flag during linking and do at least one of the following:
- add LIBDIR to the 'LD_LIBRARY_PATH' environment variable
during execution
- add LIBDIR to the 'LD_RUN_PATH' environment variable
during linking
- use the '-Wl,-rpath -Wl,LIBDIR' linker flag
- have your system administrator add LIBDIR to '/etc/ld.so.conf'
See any operating system documentation about shared libraries for
more information, such as the ld(1) and ld.so(8) manual pages.
----------------------------------------------------------------------
安装完成,测试:在libmodbus-master下运行
make check
显示
============================================================================
Testsuite summary for libmodbus 3.1.4
============================================================================
# TOTAL: 1
# PASS: 1
# SKIP: 0
# XFAIL: 0
# FAIL: 0
# XPASS: 0
# ERROR: 0
============================================================================
在两个终端分别运行以下测试程序
cd ~/libmodbus-master/tests
./unit-test-server
cd ~/libmodbus-master/tests
./unit-test-client
可以看到两端的输入输出,配置成功。
官方提示我们可以用pkg-config.查了一下:
库文件编译完成后,会在{installed_home/lib/}下生成产生一个名为pkgconfig的目录,内含该链接库的.pc文件,此文件记录了改库的相关信息。为了能被查找读取到,需要将该.pc文件安装到 /usr/lib/pkgconfig/ 目录中,或在PKG_CONFIG_PATH环境变量中加入该.pc文件的安装路径。这样做的目的是为了使依赖此库的其它程序能够借助pkg-config自动链接该库,避免编译期错误。
然后在文件夹中可以看到libmodbus.pc,把此文件夹加入到pkg-config的搜索范围,参考如下:
export PKG_CONFIG_PATH=/home/wxw/libmodbus-master/
查看PKG PATH
echo $PKG_CONFIG_PATH
然后检查下能不能查到
$ pkg-config --cflags libmodbus
-I/usr/local/include/modbus
$ pkg-config --libs libmodbus
-L/usr/local/lib -lmodbus
–-list-all 列出所有已安装的共享库
-–cflags 列出指定共享库的预处理和编译flag。
-–libs 列出指定共享库的链接flag。
之后使用libmodbus库时,就可以这么写:
$ gcc sample.c -o sample `pkg-config --cflags --libs libmodbus`
g++ main.cpp robot_modbus.cpp -o modrobot `pkg-config –libs libmodbus`
使用 pkg-config 的 –cflags 参数可以给出在编译时所需要的选项,而 –libs 参数可以给出连接时的选项。例如,假设一个 sample.c 的程序用到了libmods库,就可以这样编译:
$ gcc -c `pkg-config –cflags libmods` sample.c
然后这样连接:
$ gcc sample.o -o sample `pkg-config –libs libmods`