List:Internals« Previous MessageNext Message »
From:Hiromichi Watari Date:April 3 2011 7:54pm
Subject:Re: Problem linking STL::map with mysqld
View as plain text  
Hi Magnus,
Thank you for your suggestion, I included the following at the end of table.h and I got
similar and more errors.
Looks like I might have to write my own map container (oh nooooooooo !).
Hiromichi


bool is_simple_order(ORDER *order);

/****************************************************************************
  Used templates
****************************************************************************/
#ifdef HAVE_EXPLICIT_TEMPLATE_INSTANTIATION
template class std::map<int,int>;
#endif

#endif /* MYSQL_CLIENT */

#endif /* TABLE_INCLUDED */


----------------------------------------------------------------
[100%] Building CXX object sql/CMakeFiles/sql.dir/sql_yacc.cc.o
[100%] Building CXX object sql/CMakeFiles/sql.dir/sql_builtin.cc.o
Linking CXX static library libsql.a
[100%] Built target sql
[100%] Building CXX object sql/CMakeFiles/mysqld.dir/main.cc.o
Linking CXX executable mysqld
libsql.a(mysqld.cc.o): In function `std::map<int, int, std::less<int>,
std::allocator<std::pair<int const, int> > >::operator=(std::map<int,
int, std::less<int>, std::allocator<std::pair<int const, int> > >
const&)':
/usr/lib/gcc/i686-redhat-linux/4.4.4/../../../../include/c++/4.4.4/bits/stl_map.h:253:
undefined reference to `std::_Rb_tree<int, std::pair<int const, int>,
std::_Select1st<std::pair<int const, int> >, std::less<int>,
std::allocator<std::pair<int const, int> >
>::operator=(std::_Rb_tree<int, std::pair<int const, int>,
std::_Select1st<std::pair<int const, int> >, std::less<int>,
std::allocator<std::pair<int const, int> > > const&)'
libsql.a(mysqld.cc.o): In function `std::map<int, int, std::less<int>,
std::allocator<std::pair<int const, int> > >::insert(std::pair<int
const, int> const&)':
/usr/lib/gcc/i686-redhat-linux/4.4.4/../../../../include/c++/4.4.4/bits/stl_map.h:500:
undefined reference to `std::_Rb_tree<int, std::pair<int const, int>,
std::_Select1st<std::pair<int const, int> >, std::less<int>,
std::allocator<std::pair<int const, int> >
>::_M_insert_unique(std::pair<int const, int> const&)'
libsql.a(mysqld.cc.o): In function `std::map<int, int, std::less<int>,
std::allocator<std::pair<int const, int> >
>::insert(std::_Rb_tree_iterator<std::pair<int const, int> >,
std::pair<int const, int> const&)':
/usr/lib/gcc/i686-redhat-linux/4.4.4/../../../../include/c++/4.4.4/bits/stl_map.h:540:
undefined reference to `std::_Rb_tree<int, std::pair<int const, int>,
std::_Select1st<std::pair<int const, int> >, std::less<int>,
std::allocator<std::pair<int const, int> >
>::_M_insert_unique_(std::_Rb_tree_const_iterator<std::pair<int const, int>
>, std::pair<int const, int> const&)'
libsql.a(mysqld.cc.o): In function `std::map<int, int, std::less<int>,
std::allocator<std::pair<int const, int> > >::erase(int const&)':
/usr/lib/gcc/i686-redhat-linux/4.4.4/../../../../include/c++/4.4.4/bits/stl_map.h:582:
undefined reference to `std::_Rb_tree<int, std::pair<int const, int>,
std::_Select1st<std::pair<int const, int> >, std::less<int>,
std::allocator<std::pair<int const, int> > >::erase(int const&)'
libsql.a(mysqld.cc.o): In function `std::map<int, int, std::less<int>,
std::allocator<std::pair<int const, int> >
>::erase(std::_Rb_tree_iterator<std::pair<int const, int> >,
std::_Rb_tree_iterator<std::pair<int const, int> >)':
/usr/lib/gcc/i686-redhat-linux/4.4.4/../../../../include/c++/4.4.4/bits/stl_map.h:597:
undefined reference to `std::_Rb_tree<int, std::pair<int const, int>,
std::_Select1st<std::pair<int const, int> >, std::less<int>,
std::allocator<std::pair<int const, int> >
>::erase(std::_Rb_tree_iterator<std::pair<int const, int> >,
std::_Rb_tree_iterator<std::pair<int const, int> >)'
libsql.a(mysqld.cc.o): In function `std::map<int, int, std::less<int>,
std::allocator<std::pair<int const, int> > >::swap(std::map<int, int,
std::less<int>, std::allocator<std::pair<int const, int> > >&)':
/usr/lib/gcc/i686-redhat-linux/4.4.4/../../../../include/c++/4.4.4/bits/stl_map.h:616:
undefined reference to `std::_Rb_tree<int, std::pair<int const, int>,
std::_Select1st<std::pair<int const, int> >, std::less<int>,
std::allocator<std::pair<int const, int> > >::swap(std::_Rb_tree<int,
std::pair<int const, int>, std::_Select1st<std::pair<int const, int> >,
std::less<int>, std::allocator<std::pair<int const, int> > >&)'
libsql.a(mysqld.cc.o): In function `std::map<int, int, std::less<int>,
std::allocator<std::pair<int const, int> > >::find(int const&)':
/usr/lib/gcc/i686-redhat-linux/4.4.4/../../../../include/c++/4.4.4/bits/stl_map.h:659:
undefined reference to `std::_Rb_tree<int, std::pair<int const, int>,
std::_Select1st<std::pair<int const, int> >, std::less<int>,
std::allocator<std::pair<int const, int> > >::find(int const&)'
libsql.a(mysqld.cc.o): In function `std::map<int, int, std::less<int>,
std::allocator<std::pair<int const, int> > >::find(int const&) const':
/usr/lib/gcc/i686-redhat-linux/4.4.4/../../../../include/c++/4.4.4/bits/stl_map.h:674:
undefined reference to `std::_Rb_tree<int, std::pair<int const, int>,
std::_Select1st<std::pair<int const, int> >, std::less<int>,
std::allocator<std::pair<int const, int> > >::find(int const&) const'
libsql.a(mysqld.cc.o): In function `std::map<int, int, std::less<int>,
std::allocator<std::pair<int const, int> > >::count(int const&)
const':
/usr/lib/gcc/i686-redhat-linux/4.4.4/../../../../include/c++/4.4.4/bits/stl_map.h:686:
undefined reference to `std::_Rb_tree<int, std::pair<int const, int>,
std::_Select1st<std::pair<int const, int> >, std::less<int>,
std::allocator<std::pair<int const, int> > >::find(int const&) const'
libsql.a(mysqld.cc.o): In function `std::map<int, int, std::less<int>,
std::allocator<std::pair<int const, int> > >::equal_range(int
const&)':
/usr/lib/gcc/i686-redhat-linux/4.4.4/../../../../include/c++/4.4.4/bits/stl_map.h:755:
undefined reference to `std::_Rb_tree<int, std::pair<int const, int>,
std::_Select1st<std::pair<int const, int> >, std::less<int>,
std::allocator<std::pair<int const, int> > >::equal_range(int const&)'
libsql.a(mysqld.cc.o): In function `std::map<int, int, std::less<int>,
std::allocator<std::pair<int const, int> > >::equal_range(int const&)
const':
/usr/lib/gcc/i686-redhat-linux/4.4.4/../../../../include/c++/4.4.4/bits/stl_map.h:774:
undefined reference to `std::_Rb_tree<int, std::pair<int const, int>,
std::_Select1st<std::pair<int const, int> >, std::less<int>,
std::allocator<std::pair<int const, int> > >::equal_range(int const&)
const'
libsql.a(mysqld.cc.o): In function `_Rb_tree':
/usr/lib/gcc/i686-redhat-linux/4.4.4/../../../../include/c++/4.4.4/bits/stl_tree.h:602:
undefined reference to `std::_Rb_tree<int, std::pair<int const, int>,
std::_Select1st<std::pair<int const, int> >, std::less<int>,
std::allocator<std::pair<int const, int> >
>::_M_copy(std::_Rb_tree_node<std::pair<int const, int> > const*,
std::_Rb_tree_node<std::pair<int const, int> >*)'
libsql.a(mysqld.cc.o): In function `std::_Rb_tree<int, std::pair<int const, int>,
std::_Select1st<std::pair<int const, int> >, std::less<int>,
std::allocator<std::pair<int const, int> > >::clear()':
/usr/lib/gcc/i686-redhat-linux/4.4.4/../../../../include/c++/4.4.4/bits/stl_tree.h:726:
undefined reference to `std::_Rb_tree<int, std::pair<int const, int>,
std::_Select1st<std::pair<int const, int> >, std::less<int>,
std::allocator<std::pair<int const, int> >
>::_M_erase(std::_Rb_tree_node<std::pair<int const, int> >*)'
libsql.a(mysqld.cc.o): In function `std::_Rb_tree<int, std::pair<int const, int>,
std::_Select1st<std::pair<int const, int> >, std::less<int>,
std::allocator<std::pair<int const, int> > >::lower_bound(int
const&)':
/usr/lib/gcc/i686-redhat-linux/4.4.4/../../../../include/c++/4.4.4/bits/stl_tree.h:745:
undefined reference to `std::_Rb_tree<int, std::pair<int const, int>,
std::_Select1st<std::pair<int const, int> >, std::less<int>,
std::allocator<std::pair<int const, int> >
>::_M_lower_bound(std::_Rb_tree_node<std::pair<int const, int> >*,
std::_Rb_tree_node<std::pair<int const, int> >*, int const&)'
libsql.a(mysqld.cc.o): In function `std::_Rb_tree<int, std::pair<int const, int>,
std::_Select1st<std::pair<int const, int> >, std::less<int>,
std::allocator<std::pair<int const, int> > >::lower_bound(int const&)
const':
/usr/lib/gcc/i686-redhat-linux/4.4.4/../../../../include/c++/4.4.4/bits/stl_tree.h:749:
undefined reference to `std::_Rb_tree<int, std::pair<int const, int>,
std::_Select1st<std::pair<int const, int> >, std::less<int>,
std::allocator<std::pair<int const, int> >
>::_M_lower_bound(std::_Rb_tree_node<std::pair<int const, int> > const*,
std::_Rb_tree_node<std::pair<int const, int> > const*, int const&) const'
libsql.a(mysqld.cc.o): In function `std::_Rb_tree<int, std::pair<int const, int>,
std::_Select1st<std::pair<int const, int> >, std::less<int>,
std::allocator<std::pair<int const, int> > >::upper_bound(int
const&)':
/usr/lib/gcc/i686-redhat-linux/4.4.4/../../../../include/c++/4.4.4/bits/stl_tree.h:753:
undefined reference to `std::_Rb_tree<int, std::pair<int const, int>,
std::_Select1st<std::pair<int const, int> >, std::less<int>,
std::allocator<std::pair<int const, int> >
>::_M_upper_bound(std::_Rb_tree_node<std::pair<int const, int> >*,
std::_Rb_tree_node<std::pair<int const, int> >*, int const&)'
libsql.a(mysqld.cc.o): In function `std::_Rb_tree<int, std::pair<int const, int>,
std::_Select1st<std::pair<int const, int> >, std::less<int>,
std::allocator<std::pair<int const, int> > >::upper_bound(int const&)
const':
/usr/lib/gcc/i686-redhat-linux/4.4.4/../../../../include/c++/4.4.4/bits/stl_tree.h:757:
undefined reference to `std::_Rb_tree<int, std::pair<int const, int>,
std::_Select1st<std::pair<int const, int> >, std::less<int>,
std::allocator<std::pair<int const, int> >
>::_M_upper_bound(std::_Rb_tree_node<std::pair<int const, int> > const*,
std::_Rb_tree_node<std::pair<int const, int> > const*, int const&) const'
libsql.a(sql_base.cc.o): In function `std::_Rb_tree<int, std::pair<int const,
int>, std::_Select1st<std::pair<int const, int> >, std::less<int>,
std::allocator<std::pair<int const, int> > >::~_Rb_tree()':
sql_base.cc:(.text._ZNSt8_Rb_treeIiSt4pairIKiiESt10_Select1stIS2_ESt4lessIiESaIS2_EED2Ev[_ZNSt8_Rb_treeIiSt4pairIKiiESt10_Select1stIS2_ESt4lessIiESaIS2_EED5Ev]+0x28):
undefined reference to `std::_Rb_tree<int, std::pair<int const, int>,
std::_Select1st<std::pair<int const, int> >, std::less<int>,
std::allocator<std::pair<int const, int> >
>::_M_erase(std::_Rb_tree_node<std::pair<int const, int> >*)'
collect2: ld returned 1 exit status
make[2]: *** [sql/mysqld] Error 1
make[1]: *** [sql/CMakeFiles/mysqld.dir/all] Error 2
make: *** [all] Error 2


--- On Sun, 4/3/11, Magnus Blåudd <magnus.blaudd@stripped> wrote:

> From: Magnus Blåudd <magnus.blaudd@stripped>
> Subject: Re: Problem linking STL::map with mysqld
> To: "Hiromichi Watari" <hiromichiwatari@stripped>
> Cc: internals@stripped
> Date: Sunday, April 3, 2011, 1:33 PM
> On 2011-04-02 23:57, Hiromichi Watari
> wrote:
> > Hi,
> > I'm trying to use STL container "map" with MySQL
> server but I'm getting the following link error at the very
> end.
> >
> >
> > CXXFLAGS="-DUSE_SYS_STL"
> >
> > table.h has the following
> >
> > #include<map>
> > .
> > .
> > .
> > std::map<int,int>  foo;
> >
> >
> > Are there any name conflicts, since table.h is
> eventually included in just about every source ?
> > I'm not sure if I can use namespace to work around
> this problem ?
> >
> 
> 
> Hi Hiromichi,
> 
> the MySQl Server coee is normally compiled with the
> compiler flags set 
> so that you need too explicitly instantiate the templates
> you use.
> 
> Instantiate your template with code like
> 
> template std::map<int,int>;
> 
> at the end ouf your source file.
> 
> 
> You can search for "template" in sql/ for similar
> instantiations.
> 
> 
> / Magnus Blaudd
> 
> 
> >
> >
> >
> >
>
> -----------------------------------------------------------------------------------------------------------------------------------------------------------
> > .
> > .
> > .
> > .
> > .
> > [100%] Building CXX object
> sql/CMakeFiles/sql.dir/sql_yacc.cc.o
> > [100%] Building CXX object
> sql/CMakeFiles/sql.dir/sql_builtin.cc.o
> > Linking CXX static library libsql.a
> > [100%] Built target sql
> > [100%] Building CXX object
> sql/CMakeFiles/mysqld.dir/main.cc.o
> > Linking CXX executable mysqld
> > libsql.a(sql_base.cc.o): In function
> `std::_Rb_tree<int, std::pair<int const, int>,
> std::_Select1st<std::pair<int const, int> 
> >, std::less<int>,
> std::allocator<std::pair<int const, int> 
> >  >::~_Rb_tree()':
> >
>
> sql_base.cc:(.text._ZNSt8_Rb_treeIiSt4pairIKiiESt10_Select1stIS2_ESt4lessIiESaIS2_EED2Ev[_ZNSt8_Rb_treeIiSt4pairIKiiESt10_Select1stIS2_ESt4lessIiESaIS2_EED5Ev]+0x28):
> undefined reference to `std::_Rb_tree<int,
> std::pair<int const, int>,
> std::_Select1st<std::pair<int const, int> 
> >, std::less<int>,
> std::allocator<std::pair<int const, int> 
> > 
> >::_M_erase(std::_Rb_tree_node<std::pair<int const,
> int>  >*)'
> > libsql.a(sql_insert.cc.o): In function
> `std::map<int, int, std::less<int>,
> std::allocator<std::pair<int const, int> 
> >  >::operator=(std::map<int, int,
> std::less<int>, std::allocator<std::pair<int
> const, int>  >  >  const&)':
> >
>
> sql_insert.cc:(.text._ZNSt3mapIiiSt4lessIiESaISt4pairIKiiEEEaSERKS6_[std::map<int,
> int, std::less<int>,
> std::allocator<std::pair<int const, int> 
> >  >::operator=(std::map<int, int,
> std::less<int>, std::allocator<std::pair<int
> const, int>  >  > 
> const&)]+0x20): undefined reference to
> `std::_Rb_tree<int, std::pair<int const, int>,
> std::_Select1st<std::pair<int const, int> 
> >, std::less<int>,
> std::allocator<std::pair<int const, int> 
> >  >::operator=(std::_Rb_tree<int,
> std::pair<int const, int>,
> std::_Select1st<std::pair<int const, int> 
> >, std::less<int>,
> std::allocator<std::pair<int const, int> 
> >  >  const&)'
> > collect2: ld returned 1 exit status
> > make[2]: *** [sql/mysqld] Error 1
> > make[1]: *** [sql/CMakeFiles/mysqld.dir/all] Error 2
> > make: *** [all] Error 2
> >
> 
> 
Thread
Unable to download the source tree using bazaarKarthik Gurukuntala25 Feb
  • Re: Unable to download the source tree using bazaarGuilhem Bichot25 Feb
    • Re: Unable to download the source tree using bazaarKarthik Gurukuntala26 Feb
      • Re: Unable to download the source tree using bazaarGuilhem Bichot26 Feb
    • bazaar/launchpad down ?Hiromichi Watari10 Mar
      • Re: bazaar/launchpad down ?Lenz Grimmer15 Mar
        • Re: bazaar/launchpad down ?Hiromichi Watari15 Mar
          • Re: bazaar/launchpad down ?Lenz Grimmer15 Mar
            • Re: bazaar/launchpad down ?Hiromichi Watari18 Mar
              • doxygen documentation missing ?Hiromichi Watari10 Jan
              • Problem linking STL::map with mysqldHiromichi Watari2 Apr
                • Re: Problem linking STL::map with mysqldMagnus BlĂ„udd3 Apr
                  • Re: Problem linking STL::map with mysqldHiromichi Watari3 Apr
                    • Re: Problem linking STL::map with mysqldTor Didriksen4 Apr
                      • Re: Problem linking STL::map with mysqldHiromichi Watari4 Apr
                        • Re: Problem linking STL::map with mysqldTor Didriksen4 Apr
                          • Re: Problem linking STL::map with mysqldHiromichi Watari5 Apr
                • Re: Problem linking STL::map with mysqldSergei Golubchik4 Apr