# Can't compile binutils



## meciarz (Mar 11, 2013)

Hi,

I'm trying to build binutils, but everyhting stops on this error:

```
./../elfcpp/elfcpp_file.h:360: error: 'gettext' was not declared in this scope
./../elfcpp/elfcpp_file.h: In member function 'void elfcpp::Elf_file<size, big_endian, File>::construct(File*, const elfcpp::Ehdr<size, big_endian>&)':
./../elfcpp/elfcpp_file.h:383: error: there are no arguments to 'gettext' that depend on a template parameter, so a declaration of 'gettext' must be available
./../elfcpp/elfcpp_file.h:383: error: (if you use '-fpermissive', G++ will accept your code, but allowing the use of an undeclared name is deprecated)
./../elfcpp/elfcpp_file.h:386: error: there are no arguments to 'gettext' that depend on a template parameter, so a declaration of 'gettext' must be available
./../elfcpp/elfcpp_file.h: In member function 'void elfcpp::Elf_file<size, big_endian, File>::initialize_shnum()':
./../elfcpp/elfcpp_file.h:438: error: there are no arguments to 'gettext' that depend on a template parameter, so a declaration of 'gettext' must be available
./../elfcpp/elfcpp_file.h: In member function 'off_t elfcpp::Elf_file<size, big_endian, File>::section_header_offset(unsigned int)':
./../elfcpp/elfcpp_file.h:471: error: there are no arguments to 'gettext' that depend on a template parameter, so a declaration of 'gettext' must be available
./../elfcpp/elfcpp_file.h: In member function 'std::string elfcpp::Elf_file<size, big_endian, File>::section_name(unsigned int)':
./../elfcpp/elfcpp_file.h:506: error: there are no arguments to 'gettext' that depend on a template parameter, so a declaration of 'gettext' must be available
./../elfcpp/elfcpp_file.h:515: error: there are no arguments to 'gettext' that depend on a template parameter, so a declaration of 'gettext' must be available
./../elfcpp/elfcpp_file.h: In member function 'typename File::Location elfcpp::Elf_file<size, big_endian, File>::section_contents(unsigned int)':
./../elfcpp/elfcpp_file.h:532: error: there are no arguments to 'gettext' that depend on a template parameter, so a declaration of 'gettext' must be available
./../elfcpp/elfcpp_file.h: In member function 'typename elfcpp::Elf_types<size>::Elf_WXword elfcpp::Elf_file<size, big_endian, File>::section_size(unsigned int)':
./../elfcpp/elfcpp_file.h:550: error: there are no arguments to 'gettext' that depend on a template parameter, so a declaration of 'gettext' must be available
./../elfcpp/elfcpp_file.h: In member function 'typename elfcpp::Elf_types<size>::Elf_WXword elfcpp::Elf_file<size, big_endian, File>::section_flags(unsigned int)':
./../elfcpp/elfcpp_file.h:569: error: there are no arguments to 'gettext' that depend on a template parameter, so a declaration of 'gettext' must be available
./../elfcpp/elfcpp_file.h: In member function 'typename elfcpp::Elf_types<size>::Elf_Addr elfcpp::Elf_file<size, big_endian, File>::section_addr(unsigned int)':
./../elfcpp/elfcpp_file.h:588: error: there are no arguments to 'gettext' that depend on a template parameter, so a declaration of 'gettext' must be available
./../elfcpp/elfcpp_file.h: In member function 'elfcpp::Elf_Word elfcpp::Elf_file<size, big_endian, File>::section_type(unsigned int)':
./../elfcpp/elfcpp_file.h:607: error: there are no arguments to 'gettext' that depend on a template parameter, so a declaration of 'gettext' must be available
./../elfcpp/elfcpp_file.h: In member function 'elfcpp::Elf_Word elfcpp::Elf_file<size, big_endian, File>::section_link(unsigned int)':
./../elfcpp/elfcpp_file.h:626: error: there are no arguments to 'gettext' that depend on a template parameter, so a declaration of 'gettext' must be available
./../elfcpp/elfcpp_file.h: In member function 'elfcpp::Elf_Word elfcpp::Elf_file<size, big_endian, File>::section_info(unsigned int)':
./../elfcpp/elfcpp_file.h:645: error: there are no arguments to 'gettext' that depend on a template parameter, so a declaration of 'gettext' must be available
./../elfcpp/elfcpp_file.h: In member function 'typename elfcpp::Elf_types<size>::Elf_WXword elfcpp::Elf_file<size, big_endian, File>::section_addralign(unsigned int)':
./../elfcpp/elfcpp_file.h:664: error: there are no arguments to 'gettext' that depend on a template parameter, so a declaration of 'gettext' must be available
In file included from incremental.h:33,
                 from readsyms.h:30,
                 from archive.cc:36:
output.h: In member function 'virtual void gold::Output_section_headers::do_print_to_mapfile(gold::Mapfile*) const':
output.h:492: error: 'gettext' was not declared in this scope
output.h: In member function 'virtual void gold::Output_segment_headers::do_print_to_mapfile(gold::Mapfile*) const':
output.h:542: error: 'gettext' was not declared in this scope
output.h: In member function 'virtual void gold::Output_file_header::do_print_to_mapfile(gold::Mapfile*) const':
output.h:589: error: 'gettext' was not declared in this scope
output.h: In member function 'virtual void gold::Output_data_const::do_print_to_mapfile(gold::Mapfile*) const':
output.h:815: error: 'gettext' was not declared in this scope
output.h: In member function 'virtual void gold::Output_data_const_buffer::do_print_to_mapfile(gold::Mapfile*) const':
output.h:846: error: 'gettext' was not declared in this scope
output.h: In member function 'virtual void gold::Output_data_fixed_space::do_print_to_mapfile(gold::Mapfile*) const':
output.h:878: error: 'gettext' was not declared in this scope
output.h: In member function 'virtual void gold::Output_data_space::do_print_to_mapfile(gold::Mapfile*) const':
output.h:918: error: 'gettext' was not declared in this scope
output.h: In member function 'virtual void gold::Output_data_strtab::do_print_to_mapfile(gold::Mapfile*) const':
output.h:981: error: 'gettext' was not declared in this scope
output.h: In member function 'void gold::Output_data_reloc_base<sh_type, dynamic, size, big_endian>::do_print_to_mapfile(gold::Mapfile*) const':
output.h:1501: error: there are no arguments to 'gettext' that depend on a template parameter, so a declaration of 'gettext' must be available
output.h:1502: error: there are no arguments to 'gettext' that depend on a template parameter, so a declaration of 'gettext' must be available
output.h: In member function 'void gold::Output_relocatable_relocs<sh_type, size, big_endian>::do_print_to_mapfile(gold::Mapfile*) const':
output.h:2111: error: there are no arguments to 'gettext' that depend on a template parameter, so a declaration of 'gettext' must be available
output.h: In member function 'void gold::Output_data_group<size, big_endian>::do_print_to_mapfile(gold::Mapfile*) const':
output.h:2136: error: there are no arguments to 'gettext' that depend on a template parameter, so a declaration of 'gettext' must be available
output.h: In member function 'void gold::Output_data_got<got_size, big_endian>::do_print_to_mapfile(gold::Mapfile*) const':
output.h:2277: error: there are no arguments to 'gettext' that depend on a template parameter, so a declaration of 'gettext' must be available
output.h: In member function 'virtual void gold::Output_data_dynamic::do_print_to_mapfile(gold::Mapfile*) const':
output.h:2447: error: 'gettext' was not declared in this scope
output.h: In member function 'virtual void gold::Output_symtab_xindex::do_print_to_mapfile(gold::Mapfile*) const':
output.h:2584: error: 'gettext' was not declared in this scope
archive.cc: In static member function 'static gold::Library_base::Should_include gold::Library_base::should_include_member(gold::Symbol_table*, gold::Layout*, const char*, gold::Symbol**, std::string*, char**, size_t*)':
archive.cc:116: error: 'gettext' was not declared in this scope
archive.cc: In member function 'void gold::Archive::setup()':
archive.cc:218: error: 'gettext' was not declared in this scope
archive.cc: In member function 'void gold::Archive::read_armap(off_t, gold::section_size_type)':
archive.cc:306: error: 'gettext' was not declared in this scope
archive.cc: In member function 'off_t gold::Archive::interpret_header(const gold::Archive::Archive_header*, off_t, std::string*, off_t*) const':
archive.cc:338: error: 'gettext' was not declared in this scope
archive.cc:358: error: 'gettext' was not declared in this scope
archive.cc:369: error: 'gettext' was not declared in this scope
archive.cc:400: error: 'gettext' was not declared in this scope
archive.cc:410: error: 'gettext' was not declared in this scope
archive.cc: In member function 'void gold::Archive::const_iterator::read_next_header()':
archive.cc:507: error: 'gettext' was not declared in this scope
archive.cc: In member function 'gold::Object* gold::Archive::get_elf_object_for_member(off_t, bool*)':
archive.cc:675: error: 'gettext' was not declared in this scope
archive.cc: In static member function 'static void gold::Archive::print_stats()':
archive.cc:1020: error: 'gettext' was not declared in this scope
archive.cc: In static member function 'static void gold::Lib_group::print_stats()':
archive.cc:1254: error: 'gettext' was not declared in this scope
gmake[4]: *** [archive.o] Error 1
gmake[4]: Leaving directory `/usr/ports/devel/binutils/work/binutils-2.23.1/gold'
gmake[3]: *** [all-recursive] Error 1
gmake[3]: Leaving directory `/usr/ports/devel/binutils/work/binutils-2.23.1/gold'
gmake[2]: *** [all] Error 2
gmake[2]: Leaving directory `/usr/ports/devel/binutils/work/binutils-2.23.1/gold'
gmake[1]: *** [all-gold] Error 2
gmake[1]: Leaving directory `/usr/ports/devel/binutils/work/binutils-2.23.1'
gmake: *** [all] Error 2
*** [do-build] Error code 1

Stop in /usr/ports/devel/binutils.
```

I have no idea, what do with this


----------



## meciarz (Mar 11, 2013)

My /etc/make.conf.:

```
WITHOUT_X11=yes
WITH_UTF8=yes
WITHOUT_HAL=yes
WITHOUT_DBUS=yes

## optimizations
WITH_SSE=yes
WITH_3DNOW=yes
WITH_MMX=yes
WITH_THREADS=yes

CPUTYPE?=i686
CFLAGS= -O2 -fno-strict-aliasing -pipe -s
CXXFLAGS= -O2 -fno-strict-aliasing -pipe -s
COPTFLAGS= -O2 -fno-strict-aliasing -pipe -s -funroll-loops -ffast-math

OPTIMIZED_CFLAGS=YES
BUILD_OPTIMIZED=YES
WITH_CPUFLAGS=YES
WITH_OPTIMIZED_CFLAGS=YES

NO_INET6=YES

#WITHOUT_DEBUG=YES


## do not install *.symbol files in /boot/kernel
INSTALL_NODEBUG=yes

## do not ask
BATCH=yes

## MySQL server
.if ${.CURDIR:M*/ports/databases/mysql*-server}
  WITH_CHARSET=utf8
  WITH_COLLATION=utf8_general_ci
.endif

# added by use.perl 2013-03-10 18:33:49
PERL_VERSION=5.14.2
```


----------



## wblock@ (Mar 11, 2013)

Setting CFLAGS in /etc/make.conf is a mistake.  It actually prevents ports that can really use optimized CFLAGS from using them.  It can also cause subtle and hard to debug errors.  Please don't do that.


----------



## meciarz (Mar 11, 2013)

Well you have absolutly right. I've hashed flags: CFLAGS, CXXFLAGS, COPTFLAGS and compilation finished successfully

Thanks for help.


----------

