No problem + thanks for your help ... Cheers, Lukas
Lorenzo Bettini napsal(a):
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:
lu...@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
lu...@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
_______________________________________________
Help-gengetopt mailing list
[email protected]
http://lists.gnu.org/mailman/listinfo/help-gengetopt