Re: Problem with compiling gengetopt on OpenSolaris
Lukas Rovensky <[email protected]> Mon, 11 May 2009 13:22:07 +0200
| Newsgroups | gmane.comp.gnu.gengetopt.general |
|---|---|
| Message-ID | <[email protected]> |
Hi Lorenzo,
thanks a lot for both your e-mails. I just tried the fixed version and
it compiles on my OpenSolaris box without any problems (I tried again
both gcc and SunStudio cc). When do you plan to have this fixed version
publicly available (gengetopt 2.22.2)?
Thanks,
Lukas
Lorenzo Bettini wrote:
> Hi there
>
> I've uploaded a possibly fixed version here:
>
> http://rap.dsi.unifi.it/~bettini/gengetopt-2.22.1.tar.gz
>
> this does not depend on flex library anymore, so you shouldn't
> experience this bug.
>
> please let me know
>
> thanks in advance
> Lorenzo
>
> Lukas Rovensky wrote:
>> Hi there,
>>
>> I tried to compile gengetopt 2.22 on OpenSolaris 2008.11 (both using
>> gcc/g++ and SunStudio cc/CC) and I got the following error during
>> linking:
>>
>> g++ -g -O2 -o gengetopt parser.o scanner.o argsdef.o cmdline.o
>> gengetopt.o gm.o yyerror.o gm_utils.o fileutils.o acceptedvalues.o
>> ggos.o ../gl/.libs/libgnu.a -lfl skels/.libs/libgen.a
>> /usr/sfw/lib/libstdc++.so -L/usr/sfw/lib -lgcc_s -lm -Wl,-R
>> -Wl,/usr/sfw/lib -Wl,-R -Wl,/usr/sfw/lib
>> ld: warning: file /usr/sfw/lib/libstdc++.so: attempted multiple
>> inclusion of file
>> Undefined first referenced
>> symbol in file
>> yylex /usr/lib/libfl.so
>> ld: fatal: Symbol referencing errors. No output written to gengetopt
>> collect2: ld returned 1 exit status
>>
>> The problem is that C++ compiler creates "mangled" symbol name for yylex:
>>
>> lukas@myspulin:~/Desktop/t/gengetopt-2.22.1$ elfdump src/scanner.o |
>> grep yylex
>> [99] 0x00000828 0x000000f7 FUNC GLOB D 0 .text
>> _Z13yylex_destroyv
>> [111] 0x000009c8 0x00000eab FUNC GLOB D 0 .text _Z5yylexv
>> lukas@myspulin:~/Desktop/t/gengetopt-2.22.1$ elfdump src/parser.o |
>> grep yylex
>> [81] 0x00000000 0x00000000 NOTY GLOB D 0 UNDEF _Z5yylexv
>> R_386_PC32 0xcf2 .rel.text
>> _Z5yylexv
>>
>> While the libfl.so expects just "yylex". I solved this issue by
>> wrapping the lines declaring yylex function like:
>>
>> #ifdef __cplusplus
>> extern "C" {
>> #endif
>> extern int yylex(int);
>> #ifdef __cplusplus
>> }
>> #endif
>>
>> in the files parser.cc and scanner.cc.
>>
>> However, when I compiled gengetopt on Ubuntu 8.10 then the code got
>> compiled and linked without any modifications.
>>
>> Am I doing something wrong (missing some parameter for configure,
>> etc.)? I will definitely appreciate any advise.
>>
>> Another option -- would you be eventually willing to accept a simple
>> patch adding the "#ifdef __cplusplus ..." guards, so gengetopt can get
>> directly compiled on OpenSolaris?
>>
>> Thanks for any help.
>>
>> Kind regards,
>> Lukas
>>
>>
>>
>> _______________________________________________
>> Help-gengetopt mailing list
>> [email protected]
>> http://lists.gnu.org/mailman/listinfo/help-gengetopt
>
>