Re: help!g++ compiling failed when application ported from RH 7.3 to FC3

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 4 Jul 2005, Yang Shuichao wrote:

I am a new bie to C++ programming under Linux.I am requried to port some 
software from Redhat linux 7.3(with g++ version 2.9.6) to fedora core 
three(with g++ version 3.4.2). The original source code was complied 
successfully in Redhat but failed under fedora.I found the system header 
files included in my software were implemented differently in these two 
system and even their PATH are different too. I copied from Redhat all 
the header files to my fedora system and recompiled them under fedora 
with the same options used in redhat, but still got many many errors 
like below: ./usrinclude/g++-3/std/straits.h:108: error: an explicit 
specialization must be preceded by 'template <>' 
./usrinclude/pthread.h:163: error: expected `,' or `...' before 
"__thread" ./usrinclude/pthread.h:591: error: storage class specifiers 
invalid in parameter declarations ./usrinclude/pthread.h:591: error: 
storage class specified for parameter `parameter'
./usrinclude/g++-3/stl_alloc.h:701: error: expected constructor, destructor, or type conversion before '*' token
./usrinclude/g++-3/stl_alloc.h:701: error: expected `;' before '*' token
./usrinclude/g++-3/stl_alloc.h:961: error: non-template `rebind' used as template

What shall I do?  Can anybody help me? Great thanks.
If you are compiling with gcc-3.4, you must use the gcc-3.4 system 
headers.  Also, you should never use these "hidden" header files such as 
straits.h and stl_alloc.h that you mention (though you may see references 
to them from standard header files that you did include, if you included 
2.96 versions).
There are some significant changes between g++-2.96 and gcc-3.4 in terms 
of how strictly the compiler enforces standard langauge constructs.  If 
you had a program that compiled under 2.96 and doesn't under 3.4, it is 
likely that the program contains incorrect C++ and you'll have to go 
through with a recent C++ book and correct the errors.
In FC3, there were compat-gcc and compat-libstdc++ packages that (IIRC) 
still compiled 2.96 code.  A *temporary* solution would be to install 
those packages and compile your app with them.  But in the long run, you 
will need to fix your code to conform to standard C++.
--
		Matthew Saltzman

Clemson University Math Sciences
mjs AT clemson DOT edu
http://www.math.clemson.edu/~mjs


[Index of Archives]     [Current Fedora Users]     [Fedora Desktop]     [Fedora SELinux]     [Yosemite News]     [Yosemite Photos]     [KDE Users]     [Fedora Tools]     [Fedora Docs]

  Powered by Linux