letter-to-phoneme / m2m-aligner

Automatically exported from code.google.com/p/m2m-aligner
MIT License
41 stars 4 forks source link

Build problem on gcc 4.4 #1

Open GoogleCodeExporter opened 8 years ago

GoogleCodeExporter commented 8 years ago

Thank you very much for making this code available. I've succeed in building 
m2m-aligner on 
g++ 4.1.2. On the more recent 4.4, I get this error message

$ make
g++ -O3 -ffast-math -funroll-all-loops -fpeel-loops -ftracer -funswitch-loops 
-funit-at-a-
time -pthread  -c -I./tclap1.1.0/include/   mmAligner.cpp -o mmAligner.o
In file included from ./tclap1.1.0/include/tclap/UnlabeledValueArg.h:30,
                 from ./tclap1.1.0/include/tclap/CmdLine.h:28,
                 from mmAligner.cpp:48:
./tclap1.1.0/include/tclap/ValueArg.h: In member function ‘int 
TCLAP::VALUE_ARG_HELPER::ValueExtractor<T>::extractValue(const std::string&)’:
./tclap1.1.0/include/tclap/ValueArg.h:103: error: ‘EOF’ was not declared in 
this scope
In file included from ./tclap1.1.0/include/tclap/UnlabeledMultiArg.h:29,
                 from ./tclap1.1.0/include/tclap/CmdLine.h:29,
                 from mmAligner.cpp:48:
./tclap1.1.0/include/tclap/MultiArg.h: In member function ‘int 
TCLAP::MULTI_ARG_HELPER::ValueExtractor<T>::extractValue(const std::string&)’:
./tclap1.1.0/include/tclap/MultiArg.h:103: error: ‘EOF’ was not declared in 
this scope
make: *** [mmAligner.o] Error 1

$ uname -a
Linux tyr 2.6.31-20-server #58-Ubuntu SMP Fri Mar 12 05:40:05 UTC 2010 x86_64 
GNU/Linux

$ g++ --version
g++ (Ubuntu 4.4.1-4ubuntu9) 4.4.1

If you need any further information, please let me know. Thanks!

Anders

Original issue reported on code.google.com by nitil...@gmail.com on 29 Apr 2010 at 12:10

GoogleCodeExporter commented 8 years ago
[deleted comment]
GoogleCodeExporter commented 8 years ago
I believe that the error messages due to the TCLAP library package. Could you 
try to 
get a newer version (1.2.0) at : http://tclap.sourceforge.net/ 

and basically just uncompress, make and point the main program makefile to the 
new 
installed directory which previously it points to ./tclap1.1.0/include 

The TCLAP library package is basically for parsing program options. Its 
contribution 
is http://tclap.sourceforge.net/

Please let me know if this update fixes the problem, so that I will update it 
in the 
next version. 

Thank you,
Sittichai

Original comment by jiampojamarn3 on 4 May 2010 at 4:46

GoogleCodeExporter commented 8 years ago
Thank you for the suggestion. Still no luck, though. But the error has changed; 
I now get:

% make
g++ -O3 -ffast-math -funroll-all-loops -fpeel-loops -ftracer -funswitch-loops 
-funit-at-a-time -pthread  
-c -I./tclap-1.2.0/include/   mmAligner.cpp -o mmAligner.o
In file included from mmEM.h:4,
                 from mmAligner.cpp:51:
util.h: In function ‘void convert(const std::string&, T&, bool)’:
util.h:106: error: reference to ‘istringstream’ is ambiguous
./tclap-1.2.0/include/tclap/Arg.h:43: error: candidates are: typedef struct 
std::istringstream istringstream
/usr/include/c++/4.4/iosfwd:133: error:                 typedef struct 
std::basic_istringstream<char, 
std::char_traits<char>, std::allocator<char> > std::istringstream
util.h:106: error: reference to ‘istringstream’ is ambiguous
./tclap-1.2.0/include/tclap/Arg.h:43: error: candidates are: typedef struct 
std::istringstream istringstream
/usr/include/c++/4.4/iosfwd:133: error:                 typedef struct 
std::basic_istringstream<char, 
std::char_traits<char>, std::allocator<char> > std::istringstream
util.h:106: error: expected ‘;’ before ‘i’
util.h:109: error: ‘i’ was not declared in this scope
In file included from ./tclap-1.2.0/include/tclap/Arg.h:54,
                 from ./tclap-1.2.0/include/tclap/SwitchArg.h:30,
                 from ./tclap-1.2.0/include/tclap/CmdLine.h:27,
                 from mmAligner.cpp:48:
./tclap-1.2.0/include/tclap/ArgTraits.h: At global scope:
./tclap-1.2.0/include/tclap/ArgTraits.h: In instantiation of 
‘TCLAP::ArgTraits<long double>’:
./tclap-1.2.0/include/tclap/ValueArg.h:389:   instantiated from ‘void 
TCLAP::ValueArg<T>::_extractValue(const std::string&) [with T = long double]’
./tclap-1.2.0/include/tclap/ValueArg.h:349:   instantiated from ‘bool 
TCLAP::ValueArg<T>::processArg(int*, 
std::vector<std::basic_string<char, std::char_traits<char>, 
std::allocator<char> >, 
std::allocator<std::basic_string<char, std::char_traits<char>, 
std::allocator<char> > > >&) [with T = long 
double]’
mmAligner.cpp:269:   instantiated from here
./tclap-1.2.0/include/tclap/ArgTraits.h:75: error: ‘long double’ is not a 
class, struct, or union type
make: *** [mmAligner.o] Error 1

Original comment by nitil...@gmail.com on 7 May 2010 at 6:52

GoogleCodeExporter commented 8 years ago
Sorry for misleading. After Google a while, the error you are experiencing on 
the 
first post (error: ‘EOF’ was not declared in this scope) is from the new 
version of 
GCC itself. Please read : 

http://www.cyrius.com/journal/gcc/gcc-4.4-include

You can add #include<cstdio> in those files that complained about EOF.

Let me know how it goes, sorry it isn't easy for me to obtain GCC 4.4 to test 
on.

Original comment by jiampojamarn3 on 19 May 2010 at 6:16

GoogleCodeExporter commented 8 years ago

That was it! With just the one change below it compiles cleanly on gcc 4.4. 
Thanks for figuring this out.

Anders

--- mmAligner.cpp.orig  2010-03-25 22:12:42.000000000 +0100
+++ mmAligner.cpp   2010-05-21 09:18:32.066497674 +0200
@@ -44,6 +44,7 @@
 #include <iostream>
 #include <list>
 #include <ctime>
+#include <cstdio>

 #include <tclap/CmdLine.h>

Original comment by nitil...@gmail.com on 21 May 2010 at 7:29

GoogleCodeExporter commented 8 years ago
Thank you Anders for confirming and suggesting the actual edit.  

Original comment by jiampojamarn3 on 21 May 2010 at 3:33

GoogleCodeExporter commented 8 years ago

Original comment by jiampojamarn3 on 21 May 2010 at 3:39

GoogleCodeExporter commented 8 years ago
I've got the same messages, but I could compile the code by changing two things 
:
  - instead of #include <cmath>, use #include <math.h>
  - instead of logl, use log function 
    According to this website (http://publib.boulder.ibm.com/infocenter/zos/v1r12/index.jsp?topic=%2Fcom.ibm.zos.r12.bpxbd00%2Flog.htm), it seems function "logl" is not available in Windows.

Hope this comments can help the others too.

Original comment by kheangs...@gmail.com on 27 May 2013 at 7:10

giuliopaci commented 8 years ago

I think this issue should be closed as the original issue has been addressed and the solution at the end is for issue #2.