gcc - open62541:构建 PubSub 示例时出错
问题描述
目前,我正在尝试构建 open62541 实现的 PubSub 示例。我已经多次阅读有关如何构建示例的文档,但我无法弄清楚。
我试图编译 PubSub 教程示例。这包括 tutorial_pubsub_publish.c 和 tutorial_pubsub_subscribe.c 文件。克隆存储库后,我按如下方式构建了库:
mkdir build
cd build
cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED_LIBS=ON -
DUA_ENABLE_AMALGAMATION=ON -DUA_ENABLE_PUBSUB=ON ..
make
首先,我编译了有效的发布示例:
gcc -std=c99 -o PubSub_Publish_Example open62541.c tutorial_pubsub_publish.c
然后,我尝试以同样的方式编译订阅示例:
gcc -std=c99 -o PubSub_Publish_Example open62541.c tutorial_pubsub_subscribe.c
这产生了很多错误-都说“没有这样的文件或目录(第一个错误是#include“ua_architecture_base.h”)然后我尝试用ua_architecture_base.h编译它并得到其他丢失的文件或目录错误等等...
我也尝试编译 open62541 的整个包含文件夹,但我也得到“没有这样的文件或目录”错误:
gcc -std=c99 -I /home/theresa/Desktop/open62541/include -o PubSub_Subscribe_Example open62541.c tutorial_pubsub_subscribe.c
我还注意到在 open62541 master 提供的所有示例中,tutorial_pubsub_subscribe.c 文件是唯一不包含 open62541.h 文件夹的示例。相反,它包含一些其他头文件:
#include "ua_pubsub_networkmessage.h"
#include "ua_log_stdout.h"
#include "ua_server.h"
#include "ua_config_default.h"
#include "ua_pubsub.h"
#include "ua_network_pubsub_udp.h"
#ifdef UA_ENABLE_PUBSUB_ETH_UADP
#include "ua_network_pubsub_ethernet.h"
#endif
#include "src_generated/ua_types_generated.h"
#include <stdio.h>
#include <signal.h>
那么如何编译和运行 tutorial_pubsub_subscribe.c 示例,为什么订阅者示例不包含 open62541 头文件?
解决方案
我按照“使用 CMake for Windows 构建”的说明取得了成功。
使用 cmake-gui 我选择了(高级)功能:UA_BUILD_EXAMPLES、UA_ENABLE_PUBSUB、UA_ENABLE_PUBSUB_INFORMATIONMODEL、UA_ENABLE_PUBSUB_INFORMATIONMODEL_METHODS 和 UA_NAMESPACE_ZERO = FULL
推荐阅读
- mqtt - Sonoff RF Bridge to Mosquitto(在 Windows 上)配置
- python - OpenCV 无法从文件中读取视频流
- node.js - 在 mqttjs 中发布多个缓冲区
- powershell - 使用 gMSA 帐户执行命令
- javascript - 无法使用 selenium 或 javascript 在 Safari 浏览器中拖动滑块
- python - 在 Python 中绘制耦合常微分方程系统的向量场
- java - 签名密钥的算法“SHA256withECDSA”不等于有效的 HmacSHA* 算法名称,不能与 HS512 一起使用
- c# - 如何从 asp.net 核心中的 startup.cs 获取 HTTP 标头值?
- javascript - createAsyncThunk: 错误: addCase 不能用两个 reducer 调用相同的操作类型
- javascript - Reactjs,Typescript 错误 TS2322:类型 {} 不可分配给类型“IntrinsicAttributes & IntrinsicClassAttributes”