Hi All,
I tried to run a small c++ application which uses stl map on top of fiasco. The application compiles and runs perfectly when compiled using standard c++ libraries. But when I try to create a package with this appilcation source code in tudos/l4/pkg (where compilation is done with uclibc++ instead of standard c++) I get few compilation errors. It would be great if someone gives some pointers on the error.
Source code: mymap.cc
#include<iostream>
#include<string>
#include<map>
using namespace std;
int
main()
{
map<string, int> grade_list;
map<string, int>::iterator mapIterator;
grade_list["John"] = 100;
grade_list["Alice"] = 100;
mapIterator = grade_list.begin();
cout<<mapIterator->first<<endl;
cout<<mapIterator->second<<endl;
mapIterator++;
cout<<mapIterator->first<<endl;
cout<<mapIterator->second<<endl;
return(0);
}
Output:
$ ./mymap
Alice
100
John
100
Compilation log:
... Building /home/karthik/Research/tudos/ubuild/pkg/testmap/server/src/.general.d
install -d /home/karthik/Research/tudos/ubuild/pkg/testmap/server/src/
echo '# automatically created -- modifications will be lost' >
/home/karthik/Research/tudos/ubuild/pkg/testmap/server/src/Makefile
echo 'SRC :=
/home/karthik/Research/tudos/l4/pkg/testmap/server/src'
>>
/home/karthik/Research/tudos/ubuild/pkg/testmap/server/src/Makefile
echo 'OBJ :=
/home/karthik/Research/tudos/ubuild'
>>
/home/karthik/Research/tudos/ubuild/pkg/testmap/server/src/Makefile
echo '.PHONY: x $(MAKECMDGOALS)' >>
/home/karthik/Research/tudos/ubuild/pkg/testmap/server/src/Makefile
echo 'x:' >>
/home/karthik/Research/tudos/ubuild/pkg/testmap/server/src/Makefile
echo ' PWD=$(SRC) $(MAKE) -C $(SRC) O=$(OBJ)' >> /home/karthik/Research/tudos/ubuild/pkg/testmap/server/src/Makefile
echo '$(MAKECMDGOALS):' >>
/home/karthik/Research/tudos/ubuild/pkg/testmap/server/src/Makefile
echo ' PWD=$(SRC) $(MAKE) -C $(SRC) O=$(OBJ) $@'>> /home/karthik/Research/tudos/ubuild/pkg/testmap/server/src/Makefile
PWD=/home/karthik/Research/tudos/ubuild/pkg/testmap/server/src/OBJ-amd64_686-l4v2
make -C
/home/karthik/Research/tudos/ubuild/pkg/testmap/server/src/OBJ-amd64_686-l4v2
-f Makefile
make[1]: Entering directory `/home/karthik/Research/tudos/ubuild/pkg/testmap/server/src/OBJ-amd64_686-l4v2'
... Building .general.d
... Building Makefile.inc
make[1]: Leaving directory `/home/karthik/Research/tudos/ubuild/pkg/testmap/server/src/OBJ-amd64_686-l4v2'
make[1]: Entering directory `/home/karthik/Research/tudos/ubuild/pkg/testmap/server/src/OBJ-amd64_686-l4v2'
... Compiling mymap.o
LD_PRELOAD=/home/karthik/Research/tudos/ubuild/tool/gendep/libgendep.so
GENDEP_TARGET=mymap.o GENDEP_BINARY=cc1plus g++ -m64 -c
-DUSE_UCLIBC=y -DRAM_BASE=0x0 -DSYSTEM_amd64_686_l4v2 -DARCH_amd64
-DCPUTYPE_686 -DL4API_l4v2 -DCONFIG_L4_CALL_SYSCALLS
-DCONFIG_L4_ABS_SYSCALLS
-I/home/karthik/Research/tudos/ubuild/pkg/testmap/idl/OBJ-amd64-l4v2
-I/home/karthik/Research/tudos/ubuild/include/amd64/l4v2
-I/home/karthik/Research/tudos/ubuild/include/l4v2
-I/home/karthik/Research/tudos/ubuild/include/amd64
-I/home/karthik/Research/tudos/ubuild/include
-I/home/karthik/Research/tudos/l4/../dice/include
-I/home/drops/include/amd64/l4v2 -I/home/drops/include/l4v2
-I/home/drops/include/amd64 -I/home/drops/include -nostdinc
-I/home/karthik/Research/tudos/ubuild/include/amd64/uclibc
-I/home/karthik/Research/tudos/ubuild/include/uclibc
-I/home/karthik/Research/tudos/ubuild/include/uclibc++
-I/home/drops/include/amd64/uclibc -I/home/drops/include/uclibc
-I/home/drops/include/uclibc++
-I/usr/lib/gcc/x86_64-linux-gnu/4.4.1/include
-I/usr/lib/gcc/x86_64-linux-gnu/4.4.1/include-fixed -gstabs+
-DHAVE_CONFIG_H -I/home/karthik/Research/warped_dir/warped/src
-I/home/karthik/Research/warped_dir/warped/src/warped
-I/home/karthik/Research/warped_dir/clutils_build/include
-I/usr/include/pccts -g -O2 -fno-strict-aliasing -mno-red-zone -Wall
-fno-common -fno-stack-protector
/home/karthik/Research/tudos/l4/pkg/testmap/server/src/mymap.cc -o
mymap.o
/home/karthik/Research/tudos/ubuild/include/uclibc++/map: In
constructor ‘std::map<Key, T, Compare, Allocator>::map(const
Compare&, const Allocator&) [with Key =
std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, T = int, Compare =
std::less<std::basic_string<char, std::char_traits<char>,
std::allocator<char> > >, Allocator =
std::allocator<int>]’:
/home/karthik/Research/tudos/l4/pkg/testmap/server/src/mymap.cc:10: instantiated from here
/home/karthik/Research/tudos/ubuild/include/uclibc++/map:108: error:
invalid conversion from ‘const std::basic_string<char,
std::char_traits<char>, std::allocator<char> >
(*)(std::pair<std::basic_string<char,
std::char_traits<char>, std::allocator<char> >,
int>)’ to ‘std::basic_string<char, std::char_traits<char>,
std::allocator<char> >
(*)(std::pair<std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, int>)’
/home/karthik/Research/tudos/ubuild/include/uclibc++/map:108: error:
initializing argument 3 of ‘std::__single_associative<Key,
ValueType, Compare, Allocator>::__single_associative(const
Compare&, const Allocator&, typename
std::__base_associative<Key, ValueType, Compare,
Allocator>::key_type (*)(typename std::__base_associative<Key,
ValueType, Compare, Allocator>::value_type)) [with Key =
std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, ValueType =
std::pair<std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, int>, Compare =
std::less<std::basic_string<char, std::char_traits<char>,
std::allocator<char> > >, Allocator =
std::allocator<int>]’
/home/karthik/Research/tudos/ubuild/include/uclibc++/associative_base:
In constructor ‘std::__base_associative<Key, ValueType, Compare,
Allocator>::__base_associative(const Compare&, const
Allocator&, Key (*)(ValueType)) [with Key =
std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, ValueType =
std::pair<std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, int>, Compare =
std::less<std::basic_string<char, std::char_traits<char>,
std::allocator<char> > >, Allocator =
std::allocator<int>]’:
/home/karthik/Research/tudos/ubuild/include/uclibc++/associative_base:502:
instantiated from ‘std::__single_associative<Key, ValueType,
Compare, Allocator>::__single_associative(const Compare&, const
Allocator&, typename std::__base_associative<Key, ValueType,
Compare, Allocator>::key_type (*)(typename
std::__base_associative<Key, ValueType, Compare,
Allocator>::value_type)) [with Key = std::basic_string<char,
std::char_traits<char>, std::allocator<char> >,
ValueType = std::pair<std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, int>,
Compare = std::less<std::basic_string<char,
std::char_traits<char>, std::allocator<char> > >,
Allocator = std::allocator<int>]’
/home/karthik/Research/tudos/ubuild/include/uclibc++/map:108:
instantiated from ‘std::map<Key, T, Compare,
Allocator>::map(const Compare&, const Allocator&) [with Key
= std::basic_string<char, std::char_traits<char>,
std::allocator<char> >, T = int, Compare =
std::less<std::basic_string<char, std::char_traits<char>,
std::allocator<char> > >, Allocator =
std::allocator<int>]’
/home/karthik/Research/tudos/l4/pkg/testmap/server/src/mymap.cc:10: instantiated from here
/home/karthik/Research/tudos/ubuild/include/uclibc++/associative_base:78:
error: invalid conversion from ‘std::basic_string<char,
std::char_traits<char>, std::allocator<char> >
(*)(std::pair<std::basic_string<char,
std::char_traits<char>, std::allocator<char> >,
int>)’ to ‘const std::basic_string<char,
std::char_traits<char>, std::allocator<char> >
(*)(std::pair<std::basic_string<char,
std::char_traits<char>, std::allocator<char> >, int>)’
Makefile.inc:14: *** [mymap.o] Error 1
Thanks for your time,
karthik