Instead of this
># Link in the code from the support library
> TargetMon_LIBS +=
>
/home/epics/Software/MICESoftware/MICETrackerSoftware/.lib/libMICECoreU
> tils
> TargetMon_LIBS +=
>
/home/epics/Software/MICESoftware/MICETrackerSoftware/.lib/libMICEThrea
> ds
> TargetMon_LIBS +=
>
/home/epics/Software/MICESoftware/MICETrackerSoftware/.lib/libMICELoggi
> ng
> TargetMon_LIBS +=
>
/home/epics/Software/MICESoftware/MICETrackerSoftware/.lib/libBeamLossH
> ardwareUtils
> TargetMon_LIBS += /home/epics/Software/ExtDeps/gzstream/gzstream
> z_DIR = /usr/lib
Try
PROD_LDFLAGS +=
-L/home/epics/Software/MICESoftware/MICETrackerSoftware/.lib
PROD_SYS_LIBS += MICECoreUtils MICEThreads MICELogging
BeamLossHardwareUtils
The distinction is the LIBS are assumed to be provided by the epics
build system (either in the app or in another module specified in
configure/RELEASE) and are expected to reside under some
lib/$EPICS_HOST_ARH/ type path. SYS_LIBS can be anywhere and are only
references by name. This should result in the following being given to
the linker
g++ ..whatever..
-L/home/epics/Software/MICESoftware/MICETrackerSoftware/.lib
-lMICECoreUtils -lMICEThreads -lMICELogging -lBeamLossHardwareUtils
Which should find your libraries.
Michael Davidsaver
NSLSII Controls Group
Brookhaven National Lab
> -----Original Message-----
> From: [email protected] [mailto:tech-talk-
> [email protected]] On Behalf Of Pierrick Hanlet
> Sent: Friday, July 09, 2010 12:12 PM
> To: Mark Rivers
> Cc: [email protected]
> Subject: Re: RE: linking to shared objects user libraries
>
> As requested:
>
>
-----------------------------------------------------------------------
> ------------------------------------------
> ~/iocTops/TargetMon/configure/CONFIG_SITE:
> 1 # CONFIG_SITE
> 2
> 3 # Make any application-specific changes to the EPICS build
> 4 # configuration variables in this file.
> 5 #
> 6 # Host/target specific settings can be specified in files
named
> 7 # CONFIG_SITE.$(EPICS_HOST_ARCH).Common
> 8 # CONFIG_SITE.Common.$(T_A)
> 9 # CONFIG_SITE.$(EPICS_HOST_ARCH).$(T_A)
> 10
> 11 # Set this when you only want to compile this application
> 12 # for a subset of the cross-compiled target architectures
> 13 # that Base is built for.
> 14 #CROSS_COMPILER_TARGET_ARCHS = vxWorks-68040
> 15
> 16 # Set this when your IOC and the host use different paths
> 17 # to access the application. This will be needed to boot
> 18 # from a Microsoft FTP server or with some NFS mounts.
> 19 # You must rebuild in the iocBoot directory for this to
> 20 # take effect.
> 21 #IOCS_APPL_TOP = <path to application top as seen by IOC>
> 22
> 23 # If you don't want to install into $(TOP) then
> 24 # define INSTALL_LOCATION here
> 25 #INSTALL_LOCATION=<fullpathname>
> 26
> 27 STATIC_BUILD=NO
> 28 SHARED_LIBRARIES=YES
>
>
>
>
> Here's the makefile:
>
-----------------------------------------------------------------------
> ------------------------------------------
> TOP=../..
>
> include $(TOP)/configure/CONFIG
> #----------------------------------------
> # ADD MACRO DEFINITIONS AFTER THIS LINE
>
> #=============================
> # Build the IOC application
>
> PROD_IOC = TargetMon
>
> # TargetMon.dbd will be created and installed
> DBD += TargetMon.dbd
>
> # TargetMon.dbd will be made up from these files:
> TargetMon_DBD += base.dbd
> TargetMon_DBD += genSub.dbd
> TargetMon_DBD += genSubRecord.dbd
> TargetMon_DBD += dbGenSubExtra.dbd
>
> # TargetMon_registerRecordDeviceDriver.cpp derives from TargetMon.dbd
> TargetMon_SRCS += TargetMon_registerRecordDeviceDriver.cpp
> TargetMon_SRCS += readTgtData.c
>
> # Build the main IOC entry point on workstation OSs.
> TargetMon_SRCS_DEFAULT += TargetMonMain.cpp
> #TargetMon_SRCS_vxWorks += -nil-
>
> # Add support from base/src/vxWorks if needed
> #TargetMon_OBJS_vxWorks += $(EPICS_BASE_BIN)/vxComLibrary
>
> USR_INCLUDES += -
>
I/home/epics/Software/MICESoftware/MICETrackerSoftware/BeamLossMonitorU
> tils/include
>
> # Link in the code from the support library
> TargetMon_LIBS +=
>
/home/epics/Software/MICESoftware/MICETrackerSoftware/.lib/libMICECoreU
> tils
> TargetMon_LIBS +=
>
/home/epics/Software/MICESoftware/MICETrackerSoftware/.lib/libMICEThrea
> ds
> TargetMon_LIBS +=
>
/home/epics/Software/MICESoftware/MICETrackerSoftware/.lib/libMICELoggi
> ng
> TargetMon_LIBS +=
>
/home/epics/Software/MICESoftware/MICETrackerSoftware/.lib/libBeamLossH
> ardwareUtils
> TargetMon_LIBS += /home/epics/Software/ExtDeps/gzstream/gzstream
> z_DIR = /usr/lib
> USR_LIBS += z
>
> # Finally link to the EPICS Base libraries
> TargetMon_LIBS += $(EPICS_BASE_IOC_LIBS)
> TargetMon_LIBS += genSub
> TargetMon_LIBS += receive
> TargetMon_LIBS += transmit
>
> #=============================
>
> include $(TOP)/configure/RULES
> #----------------------------------------
> # ADD RULES AFTER THIS LINE
>
>
> Here's the end of the compilation results:
>
-----------------------------------------------------------------------
> ------------------------------------------
> /usr/bin/g++ -c -D_POSIX_C_SOURCE=199506L -D_POSIX_THREADS -
> D_XOPEN_SOURCE=500 -D_X86_ -DUNIX -D_BSD_SOURCE -Dlinux -
> D_REENTRANT -O3 -Wall -m32 -g -I. -I../O.Common -I. -I..
> -I../../../include/os/Linux -I../../../include -
> I/home/epics/epics/base/include/os/Linux -
> I/home/epics/epics/base/include -I/home/epics/epics/Support/include
> -I/home/epics/epics/Support/genSub/include -
>
I/home/epics/Software/MICESoftware/MICETrackerSoftware/BeamLossMonitorU
> tils/include ../TargetMonMain.cpp
> make[3]: *** No rule to make target `../../../lib/linux-
>
x86/lib/home/epics/Software/MICESoftware/MICETrackerSoftware/.lib/libMI
> CECoreUtils.a', needed by `TargetMon'. Stop.
> make[3]: Leaving directory
> `/home/epics/epics/iocTops/TargetMon/TargetMonApp/src/O.linux-
> x86'make[2]: *** [install.linux-x86] Error 2
> make[2]: Leaving directory
> `/home/epics/epics/iocTops/TargetMon/TargetMonApp/src'
> make[1]: *** [src.install] Error 2
> make[1]: Leaving directory
> `/home/epics/epics/iocTops/TargetMon/TargetMonApp'
> make: *** [TargetMonApp.install] Error 2
>
>
>
>
>
>
>
-----------------------------------------------------------------------
> ------------------
> Pierrick Hanlet
> Fermilab, P.O. Box 500, M.S. 122
> Batavia, IL 60510
> [email protected]
> (630)840-5555/8871/6039 office/lab/fax
> http://www-d0.fnal.gov/~hanlet
>
> "Whether you think you can or think you can't, either way, you are
> correct" -- Henry Ford
>
>
> ----- Original Message -----
> From: Mark Rivers <[email protected]>
> Date: Friday, July 9, 2010 10:03 am
> Subject: RE: linking to shared objects user libraries
> To: Pierrick Hanlet <[email protected]>, "J. Lewis Muir"
<[email protected]>
> Cc: [email protected]
>
>
> > Can you send the Makefile and the exact error message when you
build?
> >
> > -----Original Message-----
> > From: [email protected]
> > [mailto:[email protected]] On Behalf Of Pierrick Hanlet
> > Sent: Friday, July 09, 2010 9:59 AM
> > To: J. Lewis Muir
> > Cc: [email protected]
> > Subject: Re: linking to shared objects user libraries
> >
> >
> > Thanks for the quick responses.
> >
> > Yes, I did STATIC_BUILD=NO and SHARED_LIBRARIES=YES
> > in xxx/configure/CONFIG_SITE.
> >
> > Where might these be overwritten? Also, since I'm using a
> > mixture of static and shared object libraries, will this
> > configuration fix me to one type of library or another?
> > Pierrick
> >
> >
---------------------------------------------------------------------
> ---
> > -----------------
> > Pierrick Hanlet
> > Fermilab, P.O. Box 500, M.S. 122
> > Batavia, IL 60510
> > [email protected]
> > (630)840-5555/8871/6039 office/lab/fax
> > http://www-d0.fnal.gov/~hanlet
> >
> > "Whether you think you can or think you can't, either way, you are
> > correct" -- Henry Ford
> >
> >
> > ----- Original Message -----
> > From: "J. Lewis Muir" <[email protected]>
> > Date: Friday, July 9, 2010 9:50 am
> > Subject: Re: linking to shared objects user libraries
> > To: [email protected]
> >
> >
> > > On 7/9/10 9:38 AM, Pierrick Hanlet wrote:
> > > >
> > > > Hi,
> > > > I'm using 3.14.11 on a linux machine. I would like to use
several
> > > > external (i.e. non-EPICS) .so libraries in my ioc makefile/
> However,
> > > > the linking appears to default to static libraries. According to
> the
> > > > applications developers guide, section 4.6.23.7, I should modify
> > > > CONFIG_SITE, but this doesn't work.
> > > >
> > > > What should I do?
> > >
> > > Hi, Pierrick.
> > >
> > > Did you try setting both STATIC_BUILD=NO and SHARED_LIBRARIES=YES?
> > >
> > > Also, check to make sure your IOC's configuration isn't changing
> those
> > > variables. If it is, you will need to remove or change them their
> > too.
> > >
> > > Lewis
- References:
- linking to shared objects user libraries Pierrick Hanlet
- Re: linking to shared objects user libraries J. Lewis Muir
- Re: linking to shared objects user libraries Pierrick Hanlet
- RE: linking to shared objects user libraries Mark Rivers
- Re: RE: linking to shared objects user libraries Pierrick Hanlet
- Navigate by Date:
- Prev:
RE: RE: linking to shared objects user libraries Mark Rivers
- Next:
Re: linking to shared objects user libraries Andrew Johnson
- 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
- Navigate by Thread:
- Prev:
RE: linking to shared objects user libraries Andrew C. Starritt
- Next:
Re: linking to shared objects user libraries J. Lewis Muir
- 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
|