[GRASS-dev] discussion: replacing ps.map
William Kyngesburye
woklist at kyngchaos.com
Fri Apr 6 10:02:33 EDT 2007
On Apr 6, 2007, at 6:12 AM, Glynn Clements wrote:
> William Kyngesburye wrote:
>
>> I'm having a problem building libraster now. I get a bunch of
>> multiple definitions errors between the linked pngdriver and psdriver
>> when linking the raster library.
>>
>> _true_color
>> _height
>> _width
>> _init_color_table
>
> Can you find out whether the Mac linker has an option to ignore
> duplicate symbols (at least for the case where none of the symbols are
> actually being imported)?
>
> If it does, adding that switch to the definition of SHLIB_LD in
> SC_CONFIG_CFLAGS (in aclocal.m4) is the appropriate solution.
>
> If it doesn't, I can give these functions/variables unique names, but
> that's really just a workaround; this issue is likely to crop up again
> in the future.
The flag to manually make them warnings is -multiply_defined warning
(or suppress). But it's really an effect of using a flat namespace.
-flat_namespace (and -fno-common) might be a holdover from the early
Mac days building GRASS, when there were probably issues. The
default on OSX, since 10.1, is a two-level namespace, where multiply-
defined symbols are a warning by default.
I removed -flat_namespace from my SHLIB_LD in platform.make (quick-n-
dirty hack). The multiply-defined symbols don't break the raster
library linking now. But instead I have an undefined symbol in the
display library:
ld: Undefined symbols:
_PS_Driver referenced from libgrass expected to be defined in /
Applications/GRASS-6.3.app/Contents/Resources/lib/
libgrass_psdriver.dylib
(that 'libgrass' got truncated, it's really libgrass_display - it's
an intentional quirk of the OSX linker)
-----
William Kyngesburye <kyngchaos*at*kyngchaos*dot*com>
http://www.kyngchaos.com/
"Time is an illusion - lunchtime doubly so."
- Ford Prefect
More information about the grass-dev
mailing list