Re: Problem with compiling gengetopt on OpenSolaris

Lorenzo Bettini <[email protected]> Fri, 29 May 2009 12:20:31 +0200
Newsgroups gmane.comp.gnu.gengetopt.general
Message-ID <[email protected]>
sorry, I forgot to answer: I plan to release this patched version soon 
(it basically contains only bug fixes)

Lukas Rovensky wrote:
> 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
>>
>>
> 
> 
> 
> _______________________________________________
> Help-gengetopt mailing list
> [email protected]
> http://lists.gnu.org/mailman/listinfo/help-gengetopt


-- 
Lorenzo Bettini, PhD in Computer Science, DI, Univ. Torino
ICQ# lbetto, 16080134     (GNU/Linux User # 158233)
HOME: http://www.lorenzobettini.it MUSIC: http://www.purplesucker.com
http://www.myspace.com/supertrouperabba
BLOGS: http://tronprog.blogspot.com  http://longlivemusic.blogspot.com
http://www.gnu.org/software/src-highlite
http://www.gnu.org/software/gengetopt
http://www.gnu.org/software/gengen http://doublecpp.sourceforge.net