1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 <2022> 2023 2024 | Index | 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021 <2022> 2023 2024 |
<== Date ==> | <== Thread ==> |
---|
Subject: | Compilation of IOC using OPC UA device support |
From: | DESMARCHELIER Gabriel via Tech-talk <tech-talk at aps.anl.gov> |
To: | "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov> |
Date: | Wed, 9 Feb 2022 10:08:21 +0000 |
Dear all,
I am trying to work with OPC UA device support, based on Unified Automation OPC UA C++ based client library : https://github.com/epics-modules/opcua
I am only using Unified Automation evaluation bundle so far.
I am using Centos 7. Unified Automation SDK was compiled with gcc 9.4.0, openssl 1.1.1k and libxml 2.9.1. Everything went OK when compiling the SDK as far as I can see.
devOpcuaSup compiles without errors as well.
At IOC compilation, I encounter the following error and can’t get rid of it :
/usr/local/bin/g++ -o iocRfqRfAmplifiers -L/home/gd265689/local_tops/topOpcUa/lib/linux-x86_64 -L/iee/base/lib/linux-x86_64 -Wl,-rpath,/home/gd265689/local_tops/topOpcUa/lib/linux-x86_64 -Wl,-rpath,/iee/base/lib/linux-x86_64 -rdynamic -m64 iocRfqRfAmplifiers_registerRecordDeviceDriver.o iocRfqRfAmplifiersMain.o -lopcua -ldbRecStd -ldbCore -lca -lCom /home/gd265689/local_tops/topOpcUa/lib/linux-x86_64/libopcua.so: undefined reference to `UaXmlDocument::getParentNode()' /home/gd265689/local_tops/topOpcUa/lib/linux-x86_64/libopcua.so: undefined reference to `UaXmlDocument::getNodeName()' /home/gd265689/local_tops/topOpcUa/lib/linux-x86_64/libopcua.so: undefined reference to `UaXmlElement::getChild(char const*)' /home/gd265689/local_tops/topOpcUa/lib/linux-x86_64/libopcua.so: undefined reference to `UaXmlDocument::getRootNode()' /home/gd265689/local_tops/topOpcUa/lib/linux-x86_64/libopcua.so: undefined reference to `UaXmlDocument::~UaXmlDocument()' /home/gd265689/local_tops/topOpcUa/lib/linux-x86_64/libopcua.so: undefined reference to `UaXmlElement::getContent(UaXmlValue&)' /home/gd265689/local_tops/topOpcUa/lib/linux-x86_64/libopcua.so: undefined reference to `UaXmlElement::getAttributeValue(char const*, UaXmlValue&)' /home/gd265689/local_tops/topOpcUa/lib/linux-x86_64/libopcua.so: undefined reference to `UaXmlElement::UaXmlElement()' /home/gd265689/local_tops/topOpcUa/lib/linux-x86_64/libopcua.so: undefined reference to `UaXmlDocument::getNextSibling()' /home/gd265689/local_tops/topOpcUa/lib/linux-x86_64/libopcua.so: undefined reference to `UaXmlDocument::getNamespace() const' /home/gd265689/local_tops/topOpcUa/lib/linux-x86_64/libopcua.so: undefined reference to `UaXmlDocument::cleanupParser()' /home/gd265689/local_tops/topOpcUa/lib/linux-x86_64/libopcua.so: undefined reference to `UaXmlElement::UaXmlElement(UaXmlElement const&)' /home/gd265689/local_tops/topOpcUa/lib/linux-x86_64/libopcua.so: undefined reference to `UaXmlDocument::getNamespace(char const*) const' /home/gd265689/local_tops/topOpcUa/lib/linux-x86_64/libopcua.so: undefined reference to `UaXmlElement::getChildElements(char const*, std::__cxx11::list<UaXmlElement, std::allocator<UaXmlElement> >&)' /home/gd265689/local_tops/topOpcUa/lib/linux-x86_64/libopcua.so: undefined reference to `UaXmlDocument::UaXmlDocument()' /home/gd265689/local_tops/topOpcUa/lib/linux-x86_64/libopcua.so: undefined reference to `UaXmlDocument::initParser()' /home/gd265689/local_tops/topOpcUa/lib/linux-x86_64/libopcua.so: undefined reference to `UaXmlDocument::getChildElements(char const*, std::__cxx11::list<UaXmlElement, std::allocator<UaXmlElement> >&)' /home/gd265689/local_tops/topOpcUa/lib/linux-x86_64/libopcua.so: undefined reference to `UaXmlValue::UaXmlValue()' /home/gd265689/local_tops/topOpcUa/lib/linux-x86_64/libopcua.so: undefined reference to `UaXmlElement::getParentNode()' /home/gd265689/local_tops/topOpcUa/lib/linux-x86_64/libopcua.so: undefined reference to `UaXmlDocument::getFirstChild()' /home/gd265689/local_tops/topOpcUa/lib/linux-x86_64/libopcua.so: undefined reference to `UaXmlDocument::loadXmlText(char const*, int, char const*)' /home/gd265689/local_tops/topOpcUa/lib/linux-x86_64/libopcua.so: undefined reference to `UaXmlDocument::getAttributeValue(char const*, UaXmlValue&)' /home/gd265689/local_tops/topOpcUa/lib/linux-x86_64/libopcua.so: undefined reference to `UaXmlElement::operator=(UaXmlElement const&)' /home/gd265689/local_tops/topOpcUa/lib/linux-x86_64/libopcua.so: undefined reference to `UaXmlValue::~UaXmlValue()' /home/gd265689/local_tops/topOpcUa/lib/linux-x86_64/libopcua.so: undefined reference to `UaXmlElement::~UaXmlElement()' collect2: error: ld returned 1 exit status make[3]: *** [iocRfqRfAmplifiers] Error 1 make[3]: Leaving directory `/home/gd265689/local_tops/topOpcUa/iocBoot/iocRfqRfAmplifiers/src/O.linux-x86_64' make[2]: *** [install.linux-x86_64] Error 2 make[2]: Leaving directory `/home/gd265689/local_tops/topOpcUa/iocBoot/iocRfqRfAmplifiers/src' make[1]: *** [src.install] Error 2 make[1]: Leaving directory `/home/gd265689/local_tops/topOpcUa/iocBoot/iocRfqRfAmplifiers' make: *** [iocRfqRfAmplifiers.install] Error 2
My top contains : - sdk folder : Unified Automation SDK - devOpcuaSup : the EPICS device support for OPC UA - iocRfqRfAmplifiers : my IOC
Here is my CONFIG_SITE.local:
GNU_BIN = /usr/local/bin USR_CFLAGS += -std=c11 USR_CXXFLAGS += -std=c++11 CROSS_COMPILER_TARGET_ARCHS = XML_INCLUDE = /usr/include/libxml2 XML_DIR = /usr/lib64
# Path to the Unified Automation OPC UA C++ SDK UASDK = /home/gd265689/local_tops/topOpcUa/sdk
# How the Unified Automation SDK shared libraries are deployed # SYSTEM = shared libs are in a system location # PROVIDED = shared libs are in $(UASDK_SHRLIB_DIR) # INSTALL = shared libs are installed (copied) into this module # EMBED = link SDK code statically into libopcua, # SDK libraries are not required on target system UASDK_DEPLOY_MODE = EMBED UASDK_LIB_DIR = $(UASDK)/lib UASDK_SHRLIB_DIR = $(UASDK_LIB_DIR)
# How the Unified Automation SDK libraries were built UASDK_USE_CRYPTO = NO UASDK_USE_XMLPARSER = NO
include $(TOP)/configure/CONFIG_OPCUA_VERSION
My RELEASE.local :
OPCUA = /home/gd265689/local_tops/topOpcUa/devOpcuaSup
I added the following line in devOpcuaSup makefile to get rid of “openssl not found errors”
USR_INCLUDES += -I/usr/include/openssl
Can you please help me to find what is missing in my configuration ? Thank you very much !
Gabriel Desmarchelier CEA Paris-Saclay
|