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 2025 | 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 2025 |
<== Date ==> | <== Thread ==> |
---|
Subject: | Re: MySQL statement in caMonitor code |
From: | Aaron Brown via Tech-talk <[email protected]> |
To: | Mark Rivers <[email protected]> |
Cc: | tech-talk <[email protected]> |
Date: | Tue, 3 Dec 2019 15:45:10 +0000 |
So, here is what I have changed my Makefile to:
TOP=..
include $(TOP)/configure/CONFIG
#----------------------------------------
# ADD MACRO DEFINITIONS AFTER THIS LINE
#=============================
PROD_HOST += caExample
caExample_SRCS += caExample.c
caExample_LIBS += $(EPICS_BASE_HOST_LIBS)
PROD_HOST += caMonitor
caMonitor_SRCS += caMonitor.c
caMonitor_SYS_LIBS += -I/usr/include/mysql
USR_LDFLAGS += -L/usr/lib64/mysql -lmysqlclient -lpthread -lz -lm -ldl -lssl -lcrypto
include $(TOP)/configure/RULES
#----------------------------------------
# ADD RULES AFTER THIS LINE
"cannot find -l-I/usr/include/mysql" even though that is what running mysql_config --cflags returns. Did I do this correctly?
From: Mark Rivers <[email protected]>
Sent: Tuesday, December 3, 2019 10:16 AM To: Aaron Brown <[email protected]> Cc: tech-talk <[email protected]> Subject: [EXTERNAL] Re: MySQL statement in caMonitor code Your Makefile should be changed to
caMonitor _SYS_LIBS += all your libraries without the -l in front of each. The -L is probably not needed but it would go in USR_LDFLAGS += -L ... Mark Sent from my iPhone On Dec 3, 2019, at 8:58 AM, Aaron Brown <[email protected]<mailto:[email protected]>> wrote: This is what my make file looks like: TOP=.. include $(TOP)/configure/CONFIG #---------------------------------------- # ADD MACRO DEFINITIONS AFTER THIS LINE #============================= PROD_HOST += caExample caExample_SRCS += caExample.c caExample_LIBS += $(EPICS_BASE_HOST_LIBS) PROD_HOST += caMonitor caMonitor_SRCS += caMonitor.c caMonitor_LIBS += $(EPICS_BASE_HOST_LIBS) MYSQLCFLAGS += -I/usr/include/mysql MYSQLLIBS += -L/usr/lib64/mysql -lmysqlclient -lpthread -lz -lm -ldl -lssl -lcrypto include $(TOP)/configure/RULES #---------------------------------------- # ADD RULES AFTER THIS LINE I have highlighted my additions in yellow. I got the library paths from running mysql_config --cflags --libs. ________________________________ From: Mark Rivers <[email protected]<mailto:[email protected]>> Sent: Tuesday, December 3, 2019 8:39 AM To: Aaron Brown <[email protected]<mailto:[email protected]>> Cc: tech-talk <[email protected]<mailto:[email protected]>> Subject: [EXTERNAL] Re: MySQL statement in caMonitor code Please send the Makefile. ________________________________ From: Aaron Brown <[email protected]<mailto:[email protected]>> Sent: Tuesday, December 3, 2019 7:18 AM To: Mark Rivers Cc: tech-talk Subject: Re: MySQL statement in caMonitor code Hi Mark, I tried that, but everything I did returned some sort of "missing separator" error. I tried typing the paths to the libraries at the end of the Makefile and at the beginning. I even tried this: MYSQLLIBS += <path to libraries> I keep getting the same "missing separator" error. Thanks, Aaron Brown Detector Support Group Jefferson Lab ________________________________ From: Mark Rivers <[email protected]<mailto:[email protected]>> Sent: Tuesday, December 3, 2019 8:10 AM To: Aaron Brown <[email protected]<mailto:[email protected]>> Cc: tech-talk <[email protected]<mailto:[email protected]>> Subject: [EXTERNAL] Re: MySQL statement in caMonitor code > I think this means there is a linker issue, but am not sure how to fix this. Did you modify the Makefile to add the MySQL libraries to those that should be linked with? Mark ________________________________ From: Tech-talk <[email protected]<mailto:[email protected]>> on behalf of Aaron Brown via Tech-talk <[email protected]<mailto:[email protected]>> Sent: Tuesday, December 3, 2019 6:50 AM To: [email protected]<mailto:[email protected]> Subject: MySQL statement in caMonitor code Hello all, I have embedded a MySQL statement in the caMonitor example code. I have included all the necessary header files, I think, but when I compile it complains of undefined references: caMonitor.o: In function `eventCallback': /home/ambrown/3rdTest/3rdTestApp/O.linux-x86_64/../caMonitor.c:74: undefined reference to `mysql_init' /home/ambrown/3rdTest/3rdTestApp/O.linux-x86_64/../caMonitor.c:75: undefined reference to `mysql_real_connect' /home/ambrown/3rdTest/3rdTestApp/O.linux-x86_64/../caMonitor.c:92: undefined reference to `mysql_query' /home/ambrown/3rdTest/3rdTestApp/O.linux-x86_64/../caMonitor.c:93: undefined reference to `mysql_close' collect2: error: ld returned 1 exit status I think this means there is a linker issue, but am not sure how to fix this. Any ideas? Thanks Aaron Brown Detector Support Group Jefferson Lab |