Experimental Physics and Industrial Control System
Greeting, all.
All of the recent talk about readline support for the IOC shell has
pointed out the apparent reason why my IOC doesn't have the customary
commandline editing and history for my ARM CPU IOC. As I explored the
setup, I saw that readline was not being used, and so I set about to get
it installed.
On a Linux-x86 build host, using the cross-compiler I use for building
EPICS, I built both the readline & curses libraries, and installed those
in a suitable location on the build host. To the file
base/configure/os/CONFIG_SITE.linux-x86.linux-arm_el, I added:
COMMANDLINE_LIBRARY = READLINE
LDLIBS_READLINE = -lreadline -lcurses
USR_LDFLAGS += -L $(GNU_DIR)/lib
$(GNU_DIR) points to the base of my cross compiler, and the readline &
curses libs are installed there. When I then try to build the ARM IOC,
the buuld fails with:
/usr1/local/aux/CrossDevel/arm-rn100707ctng170-linux-gnu/bin/arm-rn100707ctng170-linux-gnu-g++ -o softIoc
-L/usr1/local/epics/release/R3.14.10/base-arm/lib/linux-arm_el
-Wl,-rpath,/usr1/local/epics/release/R3.14.10/base-arm/lib/linux-arm_el
-Wl,-rpath-link,/usr1/local/epics/release/R3.14.10/base-arm/lib/linux-arm_el
-L /usr1/local/aux/CrossDevel/arm-rn100707ctng170-linux-gnu/lib
-L/usr1/local/aux/CrossDevel/arm-rn100707ctng170-linux-gnu/arm-rn100707ctng170-linux-gnu/lib
softIoc_registerRecordDeviceDriver.o softMain.o
-lrecIoc -lsoftDevIoc -lmiscIoc -lrsrvIoc -ldbtoolsIoc -lasIoc
-ldbIoc -lregistryIoc -ldbStaticIoc -lca -lCom
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
NOTE: No -lreadline &/or -lcurses
>
/usr1/local/aux/CrossDevel/arm-rn100707ctng170-linux-gnu/bin/../lib/gcc/arm-rn100707ctng170-linux-gnu/4.2.1/../../../../arm-rn100707ctng170-linux-gnu/bin/ld:
warning: libreadline.so.6, needed by
/usr1/local/epics/release/R3.14.10/base-arm/lib/linux-arm_el/librecIoc.so,
not found (try using -rpath or -rpath-link)
/usr1/local/epics/release/R3.14.10/base-arm/lib/linux-arm_el/libCom.so: undefined reference to `stifle_history'
/usr1/local/epics/release/R3.14.10/base-arm/lib/linux-arm_el/libCom.so: undefined reference to `readline'
/usr1/local/epics/release/R3.14.10/base-arm/lib/linux-arm_el/libCom.so: undefined reference to `rl_insert'
/usr1/local/epics/release/R3.14.10/base-arm/lib/linux-arm_el/libCom.so: undefined reference to `add_history'
/usr1/local/epics/release/R3.14.10/base-arm/lib/linux-arm_el/libCom.so: undefined reference to `rl_bind_key'
collect2: ld returned 1 exit status
Using 'nm' I see that the undefined references would be satisfied by
libreadline.so.
So the build isn't trying to link the readline or curses libraries. How
do I make it do so? Will that be enough to get full commandline editing
working in my IOC?
Thanks.
Rod Nussbaumer
ISAC Controls, TRIUMF
Vancouver, Canada
- Navigate by Date:
- Prev:
Re: Attention, poll: Who needs the sequencer's pv layer? Stephen Lewis
- Next:
Adding readback zeroing to an asyn analog input Angus Gratton
- 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: problem with MCA module (Struck 3820 board), ACQUIRING command Mark Rivers
- Next:
Adding readback zeroing to an asyn analog input Angus Gratton
- 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