首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Arduino-Makefile:不了解如何正确使用USER_LIB_PATH

Arduino-Makefile:不了解如何正确使用USER_LIB_PATH
EN

Stack Overflow用户
提问于 2018-04-02 08:05:48
回答 3查看 882关注 0票数 0

我在Linux上使用了Arduino-Makefile命令行界面包,最近我制作了一个Arduino程序,该程序使用dht.h (一个非标准的Arduino库),我将它放在/home/ramces/Sketchbook/library目录下

我的程序包括下面这行:

代码语言:javascript
复制
#include <dht.h>

这是我的makefile:

代码语言:javascript
复制
ARDUINO_DIR = /usr/share/arduino
ARDUINO_PORT = /dev/ttyACM*
USER_LIB_PATH = /home/ramces/Sketchbook/libraries/DHT/ dht.h
BOARD_TAG = uno
ARDUINO_LIBS = LiquidCrystal
include /usr/share/arduino/Arduino.mk

非标准库是使用USER_LIB_PATH变量导入的,然而,问题是我不知道如何正确使用USER_LIB_PATH。我看了git-hub上的文档,但我仍然不确定如何正确使用USER_LIB_PATH。

当我尝试将程序加载到Arduino微控制器时,使用以下命令:

代码语言:javascript
复制
sudo make upload clean

编译停止,并显示以下错误消息:

代码语言:javascript
复制
/home/ramces/Sketchbook/libraries/DHT//dht.cpp:1: *** missing separator.  Stop.

但是,如果我只将USER_LIB_PATH变量保留为:

代码语言:javascript
复制
USER_LIB_PATH = /home/ramces/Sketchbook/libraries/DHT

我得到另一个错误:

代码语言:javascript
复制
    therm1.ino:2:17: fatal error: dht.h: No such file or directory
 #include <dht.h>
                 ^
compilation terminated.
/usr/share/arduino/Arduino.mk:1215: recipe for target 'build-uno/therm1.o' failed
make: *** [build-uno/therm1.o] Error 1

有关在git-hub中使用USER_LIB_PATH (https://github.com/sudar/Arduino-Makefile/blob/master/Arduino.mk)的文档如下所示:

代码语言:javascript
复制
# If you have your additional libraries relative to your source, rather
# than in your "sketchbook", also set USER_LIB_PATH, like this example:
#
#       USER_LIB_PATH := $(realpath ../../libraries)
EN

回答 3

Stack Overflow用户

发布于 2018-11-21 04:43:52

你不必移动你的分布式哈希表。使用USER_LIB_PATH指定存储其他库的“根目录”。

ARDUINO_LIBS中列出了使用的库。

因此,以下操作应该可以完成此操作:

代码语言:javascript
复制
USER_LIB_PATH = /home/ramces/Sketchbook/libraries/
ARDUINO_LIBS = LiquidCrystal dht
票数 1
EN

Stack Overflow用户

发布于 2018-04-02 10:25:58

如果你在Linux上运行,你需要注意你的文件夹/文件名的大小写...Linux (不像windows)区分大小写。ie Sketchbook is 不同于sketchbook

你的Sketchbook文件夹也是

代码语言:javascript
复制
/home/ramces/Sketchbook/libraries/DHT

或全部小写,如

代码语言:javascript
复制
/home/ramces/sketchbook/libraries/DHT

这同样适用于您的DHT文件夹。文件夹的大小写是什么?

因此,请检查文件/文件夹名称的大小写。

票数 0
EN

Stack Overflow用户

发布于 2018-04-03 04:55:30

我解决这个问题的一种方法是将我的非标准库dht.h和它附带的另一个库文件移到一个名为dht的新目录中,该目录必须以根用户的身份手动放置在标准Arduino库目录中,否则修改标准Arduino库目录(位于:/usr/ dht.cpp /arduino/ library )的权限将被拒绝。此外,我还必须将ARDUINO_LIBS变量更改为:

代码语言:javascript
复制
ARDUINO_LIBS = LiquidCrystal dht

因为在默认情况下,ARDUINO_LIBS将检查标准Arduino库目录中变量ARDUINO_LIBS中指定的任何库。

这并没有解决USER_LIB_PATH的问题,但它让用户绕过了不能使用非标准的Arduino库来使用某些传感器的问题,例如湿度和温度传感器库dht.h.The程序能够编译而没有问题,传感器和液晶屏现在能够执行上传到Arduino微控制器的程序。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49603805

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档