项目github地址:
https://github.com/linux-nfc/neard
git clone地址:
https://github.com/linux-nfc/neard.git
1.安装依赖库
clone完源码切换到目录neard里。这个项目需要依赖一下库:
– GCC compiler
– D-Bus library
– GLib library
– Netlink (libnl) library, version 1 or 2.
可以使用项目自带脚本安装或者单独安装。
1.1脚本安装
项目安装必要库的脚本在目录ci下,比如ubuntu系统可以使用ubuntu.sh
1.2单独安装
单独安装方式如下:
sudo apt-get install libdbus-1-dev libglib2.0-dev libnl-3-dev libnl-genl-3-dev
安装完成后使用dpkg查看库的版本,比如查看glib的版本:
dpkg -l|grep glib
其他自动编译的工具如果之前没安装过也需要安装:
apt-get install autoconf autoconf-archive automake libtool pkg-config make
2.生成编译脚本并编译和安装
目前这个项目里面的configure和Makefile都要重新生成的。生成方式如下:
1.运行
aclocal
目的是为了生成aclocal.m4这个文件。
2.运行
autoheader
autoconf
不运行autoheader可能报错:
configure.ac:7: error: required file ‘config.h.in’ not found
3.运行
libtoolize --automake --copy --debug --force
automake --add-missing
不运行libtoolize的话,直接运行automake可能会报错。
4.运行
./configure --prefix=/usr
如果报错找不到glib:
首先确定安装成功了,但是有时候安装成功pkg-config还是会找不到,这可能是因为系统里面有多个pkgconfig文件夹,pkg寻找库的时候是根据这个文件夹下的.pc文件查找的,正常需要把所有pkgconfig文件夹的路径添加到PKG_CONFIG_PATH这个环境变量里,这样pkg才会使用所有pkgconfig文件夹下的.pc文件,但是安装glib的时候把glib的.pc文件放在了一个新建的pkgconfig文件夹而没把它添加进pkg查找路径,这时候需要在目录/usr下查找glib-2.0.pc这个文件,一般是在一个名字叫pkgconfig的文件夹下,终端执行:
export PKG_CONFIG_PATH="/usr/local/lib/pkgconfig":$PKG_CONFIG_PATH
注意PKG_CONFIG_PATH后面跟的路径是上面找到的路径。
如果报错找不到Netlink library,则根据上文安装。
当./configure运行不再出错时,可以进行make了,然后使用make install安装。
make
sudo make install
安装到系统里。
这里介绍主要的几个文件:
neard
生成的可执行程序,默认安装到/usr/libexec/nfc/
org.neard.conf
neard使用dbus的conf文件,如果dbus守护进程找不到这个文件,neard在申请使用dbus的时候会拒绝导致报错。默认安装到/usr/etc/dbus-1/system.d/
neard.service
neard的服务文件,默认安装到/lib/systemd/system
neard相关头文件
默认安装到/usr/include/near,使用neard守护进程写应用的时候需要包含这些头文件
3.运行
正常neard是作为系统守护进程一直在后台运行的,所以neard的启动是通过service启动的,当然也可以命令行启动。注意,neard默认安装在/usr/libexec/nfc/目录下的,如果这个目录没有加进PATH里面,命令行是找不到neard这个命令的。
使用以下指令使能nead这个服务:
sudo systemctl enable neard.service
再使用以下指令启动neard守护进程:
sudo systemctl start neard.service
如果报错比如:
使用以下指令查看错误原因:
sudo systemctl status neard.service
笔者这里的错误原因如下:
这主要是因为dbus的配置里面没有关于neard的配置,其实还是文件没放对地方。dbus的配置文件一般都在/etc/dbus-1/system.d/目录下,里面有很多.conf文件,里面如果没有neard相关的conf文件就会报错。默认neard的conf文件会安装到 /usr/etc/dbus-1/system.d/下面,只需要把它copy到刚才的文件夹下就可以了。然后再次启动service即可。
原文地址:https://blog.csdn.net/qwe5959798/article/details/135655830
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_57718.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!