[csw-maintainers] need help with C++ linker error from Sun's linker
John Ellson
ellson at opencsw.org
Thu May 28 15:59:15 CEST 2009
James,
Thanks. I think I understand the issue, but I'm still not sure how to
fix it?
I'm not that familiar with C++, but I don't see any mismatched
definitions in the code.
Are you recommending that all "const char* const ... " in the sources be
changed to
"const char* ... " ?
I'm a bit reluctant to make such an extensive change to the API of this
library.
Is there a linker flag that would tell it to tolerate these extra const's ?
John
James Lee wrote:
> On 27/05/09, 19:25:50, John Ellson <ellson at opencsw.org> wrote regarding
> [csw-maintainers] need help with C++ linker error from Sun's linker:
>
>
>> If I compile liblasi (mgar/pkg/liblasi/trunk) using g++ it compiles and
>> links without problem.
>>
>
>
>> If I use Sun's tools (remove the line: "CXX=/opt/csw/gcc4/bin/g++ \"
>> from the Makefile)
>> then I get this error:
>>
>
> ...
>
>
>> Undefined first referenced
>> symbol in file
>> void LASi::PostscriptDocument::setFont(const
>>
>>
> char*const,LASi::FontStyle,LASi::FontWeight,LASi::FontVariant,LASi::Font
> St
> retch)
>
>> CMakeFiles/example0.dir/MissingGlyphExample.o
>> ld: fatal: Symbol referencing errors. No output written to example0
>>
>
>
>
>
>> There's something odd about the "const char*const" but I don't know if
>> thats related.
>>
>
>
> I think you've almost answered your own question. gcc does not use
> "const" type qualifier for types passed by value when making external
> names. So "const char*const" is the same as "const char*" on the call
> because the value is copied anyway (the second "const" is of benefit to
> the compiler in the function only). Nevertheless CC likes consistency
> so try matching the "const"s in all function declarations.
>
>
>
>
> $ cat sub.cc
> void sub(const char*const arg)
> {
> return;
> }
>
> $ g++ -c sub.cc
> $ nm -C sub.o
>
>
> sub.o:
>
> [Index] Value Size Type Bind Other Shndx Name
>
> [2] | 0| 0|SECT |LOCL |0 |1 |
> [3] | 0| 0|SECT |LOCL |0 |2 |
> [4] | 0| 0|SECT |LOCL |0 |3 |
> [5] | 0| 0|SECT |LOCL |0 |4 |
> [6] | 0| 16|FUNC |GLOB |0 |1 |sub(const char*)
> [_Z3subPKc]
> [1] | 0| 0|FILE |LOCL |0 |ABS |sub.cc
>
> $ CC -c sub.cc
> $ nm -C sub.o
>
>
> sub.o:
>
> [Index] Value Size Type Bind Other Shndx Name
>
> [1] | 0| 0|FILE |LOCL |0 |ABS |sub.cc
> [2] | 16| 24|FUNC |GLOB |0 |2 |void sub(const
> char*const)
>
> [__1cDsub6Fkpkc_v_]
>
>
>
>
> James.
> _______________________________________________
> maintainers mailing list
> maintainers at lists.opencsw.org
> https://lists.opencsw.org/mailman/listinfo/maintainers
>
>
More information about the maintainers
mailing list