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  2009  2010  2011  2012  2013  <20142015  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  2009  2010  2011  2012  2013  <20142015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: Re: areaDetector 1.9.1 "dyld: Symbol not found" on Darwin
From: "J. Lewis Muir" <[email protected]>
To: Andrew Johnson <[email protected]>, [email protected]
Date: Mon, 08 Sep 2014 12:54:00 -0500
On 9/5/14, 5:33 PM, Andrew Johnson wrote:
> On 09/05/2014 05:30 PM, J. Lewis Muir wrote:
>> On 9/5/14, 5:06 PM, Andrew Johnson wrote:
>>> Running that symbol through c++filt on a Mac gives the following
>>> unmangled name:
>>>
>>> woz$ c++filt __ZNSs4_Rep20_S_empty_rep_storageE
>>> std::string::_Rep::_S_empty_rep_storage
>>>
>>> Doing a web search on that implies that you need to link against
>>> libstdc++, so try adding this to the Makefile that builds
>>> simDetectorApp:
>>>     OP_SYS_LDLIBS += -lstdc++
>>
>> Hi, Andrew.
>>
>> Thanks for the suggestion.  Unfortunately, no dice; it still aborts.
>
> Did you see the -lstdc++ option on the command-line that generated the
> IOC? I may have the wrong Makefile variable if not. If you did, it may
> be some other library that needs the flag.

Hi, Andrew.

I investigated more, and I think the problem is that the libPvAPI.a
static archive included in areaDetector 1.9.1 was built against
stdlibc++ (i.e. GNU's C++ standard library) while Mac OS X Mavericks
(10.9) and Xcode 5 build against libc++ (i.e. LLVM's C++ standard
library) by default.  The two implementations of the C++ standard
library are not binary compatible.

So, my options are to (1) hack areaDetector to not link with the PvAPI
library and avoid using the color converter plug-in and prosilica
driver, (2) get a new libPvAPI.a that is built against libc++, or (3)
build all of EPICS Base, areaDetector, etc. against stdlibc++ instead of
the default libc++.

Since I don't need the color converter plug-in nor the prosilica driver
right now, I've done (1).  I'm doubtful that a new libPvAPI.a exists to
do (2), but if it does, that would hopefully be easy to drop in.  To do
(3), I'd have to add the flag "-stdlib=libstdc++" to the compile and
link flags in the appropriate EPICS Base configure files for Darwin.

Regards,

Lewis

Replies:
RE: areaDetector 1.9.1 "dyld: Symbol not found" on Darwin Mark Rivers
References:
areaDetector 1.9.1 "dyld: Symbol not found" on Darwin J. Lewis Muir
Re: areaDetector 1.9.1 "dyld: Symbol not found" on Darwin Andrew Johnson
Re: areaDetector 1.9.1 "dyld: Symbol not found" on Darwin J. Lewis Muir
Re: areaDetector 1.9.1 "dyld: Symbol not found" on Darwin Andrew Johnson

Navigate by Date:
Prev: Re: -D__STDC_VERSION__=199901L Johnson, Andrew N.
Next: RE: areaDetector 1.9.1 "dyld: Symbol not found" on Darwin Mark Rivers
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  <20142015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: Re: areaDetector 1.9.1 "dyld: Symbol not found" on Darwin Andrew Johnson
Next: RE: areaDetector 1.9.1 "dyld: Symbol not found" on Darwin Mark Rivers
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  <20142015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 17 Dec 2015 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·