Hi!
On Mon, 8 May 2023, Han Lee wrote:
Hi Dmitry,
I think the head file (especially comments in the file) may be what you are
interested in to get your understanding.
https://github.com/epics-base/epics-base/blob/7.0/modules/libcom/src/osi/epicsReadline.h
Well, this documents the epicsReadline library, but doesn't explain why it
is required for libCom.
From my naive understanding, it is required for an iocsh functionality.
Thanks! The "iocsh" is the keyword.
When googling for "libca.so readline site:anl.gov" I finally encountered a
message "Re: Problem installing PyEpics"
(https://epics.anl.gov/tech-talk/2017/msg00206.php) from Andrew Johnson,
30 Jan 2017, with a short phrase
The core of iocsh is a part of libCom.
Yes, this explains it all.
Albeit the design looks extremely surprising -- as if some IP
implementation included an integrated ksh...
However, a brief investigation had found this had changed in the 7.0.x
between 7.0.2 and 7.0.7: in 7.0.2 the libca.so.4.13.3 does have a
dependency on libreadline, while 7.0.7's libca.so.4.14.2 does NOT.
So, if 7.0.x was refactored to get rid of this dependency, then this
change can probably be back-ported to 3.15.x. A quick inspection of
https://epics.anl.gov/base/R7-0/7-docs/RELEASE_NOTES.html doesn't show any
traces of this change; probably a "diff -Naur" between sources is
required. I'm not sure my skills are sufficient for this back-porting,
but I'll try.
With best regards,
Dmitry
On Mon, May 8, 2023 at 9:46?PM Dmitry Yu. Bolkhovityanov via Tech-talk <
tech-talk at aps.anl.gov> wrote:
Michael,
On Sun, 7 May 2023, Michael Davidsaver wrote:
On 5/6/23 23:12, Dmitry Yu. Bolkhovityanov via Tech-talk wrote:
P.S. Yes, I'm aware of a "COMMANDLINE_LIBRARY=EPICS" flag (which took
some
time to figure out :D), but the question remains -- why any commandline
editing is needed for network communication libraries at all?
This is a side-effect of the convention we use to support both dynamic
and
static linking
with one configuration. Since static libraries do not carry dependency
information, when
linking statically it is necessary to give a complete list of all
dependent
libraries
when linking any executable. This includes libreadline when libCom
depends
on it.
One simple way to avoid this over-linking in the dynamic case by passing
"-Wl,--as-needed"
when linking.
(assumes GCC or clang on an ELF target)
Thanks for this -- I didn't know of this linker option!
However, I still don't understand: why libCom depends on libreadline (or
any commandline-editing library)?
With best regards,
Dmitry
- Replies:
- Re: Why does libca.so depend on libreadline.so? Andrew Johnson via Tech-talk
- References:
- Why does libca.so depend on libreadline.so? Dmitry Yu. Bolkhovityanov via Tech-talk
- Re: Why does libca.so depend on libreadline.so? Michael Davidsaver via Tech-talk
- Re: Why does libca.so depend on libreadline.so? Dmitry Yu. Bolkhovityanov via Tech-talk
- Re: Why does libca.so depend on libreadline.so? Han Lee via Tech-talk
- Navigate by Date:
- Prev:
Issue on PDB-event / base 7.0.7 ? Gabriel Fedel via Tech-talk
- Next:
Re: PvaPy pvaccess Simon Rose via Tech-talk
- 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: Why does libca.so depend on libreadline.so? Han Lee via Tech-talk
- Next:
Re: Why does libca.so depend on libreadline.so? Andrew Johnson via Tech-talk
- 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
|