Experimental Physics and Industrial Control System
OK, I the problem is that it is linking with EPICS_BASE_IOC_LIBS first,
rather than last.
slowCtrl_registerRecordDeviceDriver.o slowCtrlMain.o
-lslowCtrlSupport
-lrecIoc -lsoftDevIoc -lmiscIoc -lrsrvIoc -ldbtoolsIoc -lasIoc -ldbIoc
-lregistryIoc -ldbStaticIoc -lca -lCom -lstream -lasyn -lcalc
-lstreamSynApps -lpthread -lm -lrt
You have a mixture of PROD_LIBS and slowCtrl_LIBS, and it must be doing
PROD_LIBS after slowCtrl_LIBS.
Change
slowCtrl_LIBS += $(EPICS_BASE_IOC_LIBS)
To
PROD_LIBS += $(EPICS_BASE_IOC_LIBS)
Mark
-----Original Message-----
From: Florian Feldbauer [mailto:[email protected]]
Sent: Friday, October 01, 2010 1:06 PM
To: Andrew Johnson
Cc: [email protected]; Florian Feldbauer; Mark Rivers
Subject: Re: Cross compiling EPICS for cris v10
Here's the makefile:
> TOP=../..
>
> include $(TOP)/configure/CONFIG
> #----------------------------------------
> # ADD MACRO DEFINITIONS AFTER THIS LINE
>
> #=============================
> # Build the IOC support library
> LIBRARY_IOC += slowCtrlSupport
>
> PROD_LIBS += stream
> PROD_LIBS += asyn
> PROD_LIBS += calc
> PROD_LIBS += streamSynApps
>
> # xxxRecord.h will be created from xxxRecord.dbd
> DBDINC += xxxRecord
> # Install devXxxSoft.dbd into <top>/dbd
> DBD += xxxSupport.dbd
>
> # Compile and add the code to the support library
> slowCtrlSupport_SRCS += xxxRecord.c
> slowCtrlSupport_SRCS += devXxxSoft.c
>
> # Link locally-provided code into the support library,
> # rather than directly into the IOC application.
> slowCtrlSupport_SRCS += dbSubExample.c
> slowCtrlSupport_SRCS += slowCtrlHello.c
> slowCtrlSupport_SRCS += initTrace.c
>
> slowCtrlSupport_LIBS += $(EPICS_BASE_IOC_LIBS)
>
> #=============================
> # Build the IOC application
>
> PROD_IOC = slowCtrl
> # slowCtrl.dbd will be created and installed
> DBD += slowCtrl.dbd
>
> # slowCtrl.dbd will be made up from these files:
> slowCtrl_DBD += base.dbd
> slowCtrl_DBD += xxxSupport.dbd
> slowCtrl_DBD += dbSubExample.dbd
> slowCtrl_DBD += slowCtrlHello.dbd
> slowCtrl_DBD += initTrace.dbd
> slowCtrl_DBD += slowCtrlInclude.dbd
> slowCtrl_DBD += stream.dbd
> slowCtrl_DBD += asyn.dbd
>
> # slowCtrl_registerRecordDeviceDriver.cpp derives from slowCtrl.dbd
> slowCtrl_SRCS += slowCtrl_registerRecordDeviceDriver.cpp
>
> # Build the main IOC entry point on workstation OSs.
> slowCtrl_SRCS_DEFAULT += slowCtrlMain.cpp
> slowCtrl_SRCS_vxWorks += -nil-
>
> # Add support from base/src/vxWorks if needed
> #slowCtrl_OBJS_vxWorks += $(EPICS_BASE_BIN)/vxComLibrary
>
> # Link in the code from the support library
> slowCtrl_LIBS += slowCtrlSupport
>
> # NOTE: To build SNL programs, SNCSEQ must be defined
> # in the <top>/configure/RELEASE file
>
> ifneq ($(SNCSEQ),)
> # Build sncExample into slowCtrlSupport
> sncExample_SNCFLAGS += +r
> slowCtrl_DBD += sncExample.dbd
> slowCtrlSupport_SRCS += sncExample.stt
> slowCtrlSupport_LIBS += seq pv
> slowCtrl_LIBS += seq pv
>
> # Build sncProgram as a standalone program
> PROD_HOST += sncProgram
> sncProgram_SNCFLAGS += +m
> sncProgram_SRCS += sncProgram.st
> sncProgram_LIBS += seq pv
> sncProgram_LIBS += $(EPICS_BASE_HOST_LIBS)
> endif
>
> # Finally link to the EPICS Base libraries
> slowCtrl_LIBS += $(EPICS_BASE_IOC_LIBS)
>
> #=============================
>
> include $(TOP)/configure/RULES
> #----------------------------------------
> # ADD RULES AFTER THIS LINE
and here's the commandline:
/usr/local/cris/bin/cris-axis-linux-gnu-g++ -o slowCtrl -Wl,-Bstatic
-static-libgcc -Wl,--strip-all
-L/usr/Epics/base-3.14.10/lib/linux-cris_v10
-L/usr/Epics/synApps/synApps_5_5/support/calc-2-8/lib/linux-cris_v10
-L/usr/Epics/slowCtrl_etrax/lib/linux-cris_v10
-L/usr/Epics/synApps/synApps_5_5/support/asyn-4-13/lib/linux-cris_v10
-L/usr/Epics/synApps/synApps_5_5/support/stream-2-4-1/lib/linux-cris_v10
-Wl,-rpath,/usr/Epics/base-3.14.10/lib/linux-cris_v10
-Wl,-rpath,/usr/Epics/synApps/synApps_5_5/support/calc-2-8/lib/linux-cri
s_v10
-Wl,-rpath,/usr/Epics/slowCtrl_etrax/lib/linux-cris_v10
-Wl,-rpath,/usr/Epics/synApps/synApps_5_5/support/asyn-4-13/lib/linux-cr
is_v10
-Wl,-rpath,/usr/Epics/synApps/synApps_5_5/support/stream-2-4-1/lib/linux
-cris_v10
-L/usr/local/devboard-R2_20//target/cris-axis-linux-gnu/lib
-L/usr/local/devboard-R2_20//target/cris-axis-linux-gnu/usr/lib
slowCtrl_registerRecordDeviceDriver.o slowCtrlMain.o
-lslowCtrlSupport
-lrecIoc -lsoftDevIoc -lmiscIoc -lrsrvIoc -ldbtoolsIoc -lasIoc -ldbIoc
-lregistryIoc -ldbStaticIoc -lca -lCom -lstream -lasyn -lcalc
-lstreamSynApps -lpthread -lm -lrt
/usr/Epics/synApps/synApps_5_5/support/asyn-4-13/lib/linux-cris_v10/liba
syn.a(devAsynInt32.o):
In function `getIoIntInfo':
epicsTypeClass/../../asyn/devEpics/devAsynInt32.c:288: undefined
reference
to `epicsRingBytesCreate'
/usr/local/cris/lib/gcc-lib/cris-axis-linux-gnu/3.2.1/../../../../cris-a
xis-linux-gnu/bin/ld:
/usr/Epics/synApps/synApps_5_5/support/asyn-4-13/lib/linux-cris_v10/liba
syn.a(devAsynInt32.o):
No PLT for relocation R_CRIS_32_GOTPLT against symbol
`epicsRingBytesCreate' from .text section
/usr/local/cris/lib/gcc-lib/cris-axis-linux-gnu/3.2.1/../../../../cris-a
xis-linux-gnu/bin/ld:
final link failed: Bad value
collect2: ld returned 1 exit status
make[3]: *** [slowCtrl] Error 1
make[3]: Leaving directory
`/usr/Epics/slowCtrl_etrax/slowCtrlApp/src/O.linux-cris_v10'
make[2]: *** [install.linux-cris_v10] Error 2
make[2]: Leaving directory `/usr/Epics/slowCtrl_etrax/slowCtrlApp/src'
make[1]: *** [src.install] Error 2
make[1]: Leaving directory `/usr/Epics/slowCtrl_etrax/slowCtrlApp'
make: *** [slowCtrlApp.install] Error 2
Florian
On Fri, 1 Oct 2010, Andrew Johnson wrote:
> On Friday 01 October 2010 07:53:33 Florian Feldbauer wrote:
>>
>> I've just tested to build the example application using
makeBaseApp.pl
>> without changing any files. This works.
>>
>> But as soon as I add Asyn and Stream I get the error.
>
> Repeating my request of yesterday, please post your IOC's Makefile and
> the command line of the link command that fails as printed by gnumake.
> It's sounding more and more like this may be a mistake in your
Makefile,
> that you're not linking all the libraries, or you have them in the
wrong
> order.
>
> - Andrew -- If a man is offered a fact which goes against his
instincts,
> he will scrutinize it closely, and unless the evidence is
overwhelming,
> he will refuse to believe it. If, on the other hand, he is offered
> something which affords a reason for acting in accordance to his
> instincts, he will accept it even on the slightest evidence. --
> Bertrand Russell
>
- Replies:
- RE: Cross compiling EPICS for cris v10 Florian Feldbauer
- References:
- Cross compiling EPICS for cris v10 Florian Feldbauer
- RE: Cross compiling EPICS for cris v10 Mark Rivers
- RE: Cross compiling EPICS for cris v10 Florian Feldbauer
- Re: Cross compiling EPICS for cris v10 Andrew Johnson
- Re: Cross compiling EPICS for cris v10 Florian Feldbauer
- Navigate by Date:
- Prev:
Re: Cross compiling EPICS for cris v10 Florian Feldbauer
- Next:
MOXA ARM computer and streamDevice Martin Konrad
- 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: Cross compiling EPICS for cris v10 Florian Feldbauer
- Next:
RE: Cross compiling EPICS for cris v10 Florian Feldbauer
- 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