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
On Sat May 22, 2010 at 15:33:24 -0400, Karthik Vadambacheri Manian wrote:
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.
Hmm, did you try with uclibc++ under Linux to see whether it's an L4Env issue or uclibc++ related?
Adam
l4-hackers@os.inf.tu-dresden.de