[DebianGIS-dev] Bug#461673: FTBFS with GCC 4.3: missing #includes
Martin Michlmayr
tbm at cyrius.com
Sun Jan 20 09:14:12 UTC 2008
Package: grass
Version: 6.2.3-1
Usertags: ftbfs-gcc-4.3
Your package fails to build with GCC 4.3. Version 4.3 has not been
released yet but I'm building with a snapshot in order to find errors
and give people an advance warning. In GCC 4.3, the C++ header
dependencies have been cleaned up. The advantage of this is that
programs will compile faster. The downside is that you actually
need to directly #include everything you use (but you really should
do this anyway, otherwise your program won't work with any compiler
other than GCC). There's some more information about this at
http://gcc.gnu.org/gcc-4.3/porting_to.html
You can reproduce this problem with gcc-4.3 or gcc-snapshot from
unstable.
> Automatic build of grass_6.2.3-1 on em64t by sbuild/amd64 0.53
...
> main.cc:547: instantiated from here
> ./IOStream/include/ami_stream.h:220: warning: deprecated conversion from string constant to 'char*'
> c++ -c -I/build/tbm/grass-6.2.3/dist.x86_64-pc-linux-gnu/include -g -O2 -I./IOStream/include -DUSER=\"root\" -DNODATA_FIX -D_FILE_OFFSET_BITS=64 -DPACKAGE=\""grassmods"\" -DELEV_FLOAT common.cc -o OBJ.x86_64-pc-linux-gnu/FLOAT/common.o
> In file included from ./IOStream/include/ami.h:49,
> from common.h:49,
> from common.cc:55:
> ./IOStream/include/ami_stream.h: In constructor 'AMI_STREAM<T>::AMI_STREAM(const char*, AMI_stream_type)':
> ./IOStream/include/ami_stream.h:255: error: there are no arguments to 'strcpy' that depend on a template parameter, so a declaration of 'strcpy' must be available
> ./IOStream/include/ami_stream.h:255: error: (if you use '-fpermissive', G++ will accept your code, but allowing the use of an undeclared name is deprecated)
> ./IOStream/include/ami_stream.h: In member function 'AMI_err AMI_STREAM<T>::name(char**)':
> ./IOStream/include/ami_stream.h:363: error: there are no arguments to 'strlen' that depend on a template parameter, so a declaration of 'strlen' must be available
> ./IOStream/include/ami_stream.h:364: error: there are no arguments to 'strcpy' that depend on a template parameter, so a declaration of 'strcpy' must be available
> In file included from ./IOStream/include/ami_sort_impl.h:46,
> from ./IOStream/include/ami_sort.h:45,
> from ./IOStream/include/ami.h:55,
> from common.h:49,
> from common.cc:55:
> ./IOStream/include/mem_stream.h: In member function 'AMI_err MEM_STREAM<T>::name(char**)':
> ./IOStream/include/mem_stream.h:111: error: there are no arguments to 'strlen' that depend on a template parameter, so a declaration of 'strlen' must be available
> ./IOStream/include/mem_stream.h:112: error: there are no arguments to 'strcpy' that depend on a template parameter, so a declaration of 'strcpy' must be available
> make[3]: *** [OBJ.x86_64-pc-linux-gnu/FLOAT/common.o] Error 1
> make[3]: Leaving directory `/build/tbm/grass-6.2.3/raster/r.terraflow'
> r.out.tiff
--
Martin Michlmayr
http://www.cyrius.com/
More information about the Pkg-grass-devel
mailing list