EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  <20092010  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  <20092010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: RE: MAXvSetup is an undefined symbol
From: "Mark Rivers" <[email protected]>
To: "???" <[email protected]>, <[email protected]>
Date: Tue, 13 Jan 2009 20:49:40 -0600
Depending on which version of the motor module you are using you may need to edit motorApp/Makefile to uncomment the line to build the OmsSrc directory.  That is the correct way to do it, then you won't have to copy the source files to your application directory.

________________________________

From: ??? [mailto:[email protected]]
Sent: Tue 1/13/2009 7:11 PM
To: Mark Rivers; [email protected]
Subject: ??: MAXvSetup is an undefined symbol



If i don't compile the source file , there will be some error about oms:

ld < mx.munch
Undefined symbol: pvar_dset_devOMS (binding 1 type 0)
Undefined symbol: pvar_dset_devMAXv (binding 1 type 0)
Undefined symbol: pvar_drvet_drvOms (binding 1 type 0)
Undefined symbol: pvar_drvet_drvMAXv (binding 1 type 0)
Undefined symbol: pvar_dset_devOms58 (binding 1 type 0)
Undefined symbol: pvar_drvet_drvOms58 (binding 1 type 0)
ld error: Module contains undefined symbol(s) and may be unusable.
value = 0 = 0x0

Then i check the files, i did not find the oms library. So i have to compile the source directly. The reason for my problem is i don't have oms library after i compiled the motor support in the lib or other directory.


???
===================================================
No.239 Zhangheng Road
PuDong District
Shanghai Institute of Applied Physics CAS
Shanghai, China
Tel: +86-21-33933256  Fax: +86-21-33933031



-----Original Message-----
From: Mark Rivers [mailto:[email protected]]
Sent: 2009-1-13 (???) 22:29
To: ???; [email protected]
Subject: RE: MAXvSetup is an undefined symbol

You are doing things differently than we normally do.  You are compiling the motor files (motorRecord.cc, devMAXv.cc, etc.) directly as part of your application with the lines like:

mx_SRCS_vxWorks += motorRecord.cc motordevCom.cc motordrvCom.cc

but you are also including those same routines again via external libraries with lines like:

mx_LIBS += motor
mx_LIBS += SoftMotor

As noted yesterday you are not including oms as an external library, which you should.

I suggest that you do not compile the motor or oms code again as part of your application, but rather just include the libraries from the motor module.

This works fine for me under vxWorks with the vxWorks shell, I do not have problems with C++ name mangling and MAXvSetup works with no problems.

Mark






________________________________

From: [email protected] on behalf of ???
Sent: Mon 1/12/2009 5:42 AM
To: [email protected]
Subject: MAXvSetup is an undefined symbol



Hello,everyone.

I have two application of oms motor and hytec adc, but i only have a VME crate. So i need to merget the two application to one ioc. The oms motor application from
synApps and hytec 8401 work well respectively. So i use the makeBaseApp.pl to produce a new application and revise the makefile, and copy the source file to the
corresponding directory. The compile is ok, i can get the munch and st.cmd files.

When download st.cmd to the vme, there are will problems. It is said the MAXvSetup is an undefined symbol. It is very strange. I insert the hytec8001 and 8401 in the
first and the VME in the third.

Please give me some advice and idea.

Thanks.

----------------------Makefile-----------------------------------------
TOP=../..

include $(TOP)/configure/CONFIG
#----------------------------------------
#  ADD MACRO DEFINITIONS AFTER THIS LINE
#=============================

#=============================
# build an ioc application

PROD_IOC_vxWorks = mx

DBD += mx.dbd
# mx.dbd will be made up from these files:
mx_DBD += base.dbd

#include definitions for any other support applications needed
#mx_DBD += xxx.dbd
mx_DBD += transformRecord.dbd
mx_DBD += oms.dbd
mx_DBD += motorSupport.dbd
mx_DBD += motorRecord.dbd
mx_DBD += devOms.dbd
mx_DBD += devSoftMotor.dbd
mx_DBD += PSU0.dbd
mx_DBD += sscan.dbd

# <name>_registerRecordDeviceDriver.cpp will be created from <name>.dbd
mx_SRCS_vxWorks += mx_registerRecordDeviceDriver.cpp
mx_SRCS_DEFAULT += mxMain.cpp
mx_SRCS_vxWorks += -nil-

mx_SRCS_vxWorks += devOms.cc drvOms.cc
mx_SRCS_vxWorks += devOms58.cc drvOms58.cc
mx_SRCS_vxWorks += devMAXv.cc drvMAXv.cc
mx_SRCS_vxWorks += devOmsCom.cc
mx_SRCS_vxWorks += devSoft.cc devSoftAux.cc
mx_SRCS_vxWorks += motorRecord.cc motordevCom.cc motordrvCom.cc

#The following adds support from base/src/vxWorks
mx_OBJS_vxWorks += $(EPICS_BASE_BIN)/vxComLibrary

#add a definition for each support application used by this application
#mx_LIBS += xxx

#NOTES:
#      1)It is not possible to build sncExample both as a component of mx
#        and standalone. You must choose only one.
#      2)To build sncExample SNCSEQ must be defined in <top>/configure/RELEASE

#The following builds sncExample as a component of mx
#mx_SRCS += sncExample.stt
#mx_LIBS += seq pv

mx_LIBS += motor
mx_LIBS += SoftMotor
mx_LIBS += Ipac
mx_LIBS += Hy8402ip
mx_LIBS += Hy8401ip
mx_LIBS += calc
mx_LIBS += sscan

mx_LIBS_vxWorks += $(EPICS_BASE_IOC_LIBS)

#The following builds sncExample as a standalone application
#PROD_HOST += sncExample
#sncExample_SNCFLAGS += +m
#sncExample_SRCS += sncExample.stt
#sncExample_LIBS += seq pv
#sncExample_LIBS += $(EPICS_BASE_HOST_LIBS)

#===========================

include $(TOP)/configure/RULES
#----------------------------------------
#  ADD RULES AFTER THIS LINE

-----------------------------Error mesg--------------------------------
ld < mx.munch
sysAtReboot not found. epicsExit will not be called by reboot.
value = 516036768 = 0x1ec218a0

## Register all support components
cd top
value = 0 = 0x0
dbLoadDatabase("dbd/mx.dbd",0,0)
value = 0 = 0x0
mx_registerRecordDeviceDriver(pdbbase)
value = 0 = 0x0

## motor
dbLoadRecords("db/att.db")
value = 0 = 0x0

MAXvSetup(1,16,0xF000,180,6,10)
undefined symbol: MAXvSetup

???
===================================================
No.239 Zhangheng Road
PuDong District
Shanghai Institute of Applied Physics CAS
Shanghai, China
Tel: +86-21-33933256  Fax: +86-21-33933031








References:
MAXvSetup is an undefined symbol 汪启胜
RE: MAXvSetup is an undefined symbol Mark Rivers
答复: MAXvSetup is an undefined symbol 汪启胜

Navigate by Date:
Prev: 答复: MAXvSetup is an undefined symbol 汪启胜
Next: Re: stop all motors Kate Feng
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  <20092010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: 答复: MAXvSetup is an undefined symbol 汪启胜
Next: RE: MAXvSetup is an undefined symbol Mark Rivers
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  <20092010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 31 Jan 2014 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·