arm-angstrom-linux-gnueabi-gcc链接器无法链接到uclibc

时间:2012-05-20 15:48:43

标签: gcc ld uclibc angstrom-linux openembedded

我正在尝试为angstrom linux构建一个应用程序(在我的例子中使用uclibc而不是libstdc ++)。我正在使用bitbake和openembedded。使用简单的工具链,我可以通过仅添加-muclibc标志来成功构建。使用bitbake我的构建命令如下

arm-angstrom-linux-gnueabi-gcc -march=armv7-a -mtune=cortex-a8 -mfpu=neon -mfloat-abi=softfp -mthumb-interwork -mno-thumb --sysroot=/home/hnsl/stuff/tmp/sysroots/armv7a-angstrom-linux-gnueabi -fexpensive-optimizations -fomit-frame-pointer -frename-registers -O2 -ggdb2 -Wl,-O1 -Wl,--hash-style=gnu -muclibc mainThread.cpp lib.cpp -lportaudio

-muclibc mainThread.cpp lib.cpp -lportaudio由我完成。 Portaudio(-lportaudio)已成功链接。 Uclibc(我认为)没有联系;我收到这些错误:

 /tmp/ccW4SVb4.o: In function `main':
| /home/hnsl/stuff/tmp/work/armv7a-angstrom-linux-gnueabi/cphone-1.0.0-r1/mainThread.cpp:68: undefined reference to `__cxa_end_cleanup'
| /home/hnsl/stuff/tmp/work/armv7a-angstrom-linux-gnueabi/cphone-1.0.0-r1/mainThread.cpp:68: undefined reference to `__cxa_begin_catch'
| /tmp/ccW4SVb4.o: In function `operator<< <std::char_traits<char> >':
| /home/hnsl/stuff/tmp/sysroots/x86_64-linux/usr/armv7a/lib/gcc/arm-angstrom-linux-gnueabi/4.5.3/../../../../arm-angstrom-linux-gnueabi/include/c++/4.5.3/ostream:513: undefined reference to `std::cerr'
| /home/hnsl/stuff/tmp/sysroots/x86_64-linux/usr/armv7a/lib/gcc/arm-angstrom-linux-gnueabi/4.5.3/../../../../arm-angstrom-linux-gnueabi/include/c++/4.5.3/ostream:513: undefined reference to `std::cerr'
| /home/hnsl/stuff/tmp/sysroots/x86_64-linux/usr/armv7a/lib/gcc/arm-angstrom-linux-gnueabi/4.5.3/../../../../arm-angstrom-linux-gnueabi/include/c++/4.5.3/ostream:513: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::__ostream_insert<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*, int)'
| /tmp/ccW4SVb4.o: In function `std::basic_ostream<char, std::char_traits<char> >::operator<<(std::basic_ostream<char, std::char_traits<char> >& (*)(std::basic_ostream<char, std::char_traits<char> >&))':
| /home/hnsl/stuff/tmp/sysroots/x86_64-linux/usr/armv7a/lib/gcc/arm-angstrom-linux-gnueabi/4.5.3/../../../../arm-angstrom-linux-gnueabi/include/c++/4.5.3/ostream:113: undefined reference to `std::cerr'
| /home/hnsl/stuff/tmp/sysroots/x86_64-linux/usr/armv7a/lib/gcc/arm-angstrom-linux-gnueabi/4.5.3/../../../../arm-angstrom-linux-gnueabi/include/c++/4.5.3/ostream:113: undefined reference to `std::cerr'
| /home/hnsl/stuff/tmp/sysroots/x86_64-linux/usr/armv7a/lib/gcc/arm-angstrom-linux-gnueabi/4.5.3/../../../../arm-angstrom-linux-gnueabi/include/c++/4.5.3/ostream:113: undefined reference to `std::basic_ostream<char, std::char_traits<char> >& std::endl<char, std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&)'
| /tmp/ccW4SVb4.o: In function `main':
| /home/hnsl/stuff/tmp/work/armv7a-angstrom-linux-gnueabi/cphone-1.0.0-r1/mainThread.cpp:68: undefined reference to `__cxa_end_catch'
| /tmp/ccW4SVb4.o: In function `operator<< <std::char_traits<char> >':
| /home/hnsl/stuff/tmp/sysroots/x86_64-linux/usr/armv7a/lib/gcc/arm-angstrom-linux-gnueabi/4.5.3/../../../../arm-angstrom-linux-gnueabi/include/c++/4.5.3/ostream:511: undefined reference to `std::cerr'
| /home/hnsl/stuff/tmp/sysroots/x86_64-linux/usr/armv7a/lib/gcc/arm-angstrom-linux-gnueabi/4.5.3/../../../../arm-angstrom-linux-gnueabi/include/c++/4.5.3/ostream:511: undefined reference to `std::cerr'
| /tmp/ccW4SVb4.o: In function `std::basic_ios<char, std::char_traits<char> >::setstate(std::_Ios_Iostate)':
| /home/hnsl/stuff/tmp/sysroots/x86_64-linux/usr/armv7a/lib/gcc/arm-angstrom-linux-gnueabi/4.5.3/../../../../arm-angstrom-linux-gnueabi/include/c++/4.5.3/bits/basic_ios.h:148: undefined reference to `std::basic_ios<char, std::char_traits<char> >::clear(std::_Ios_Iostate)'
| /tmp/ccW4SVb4.o: In function `main':
| /home/hnsl/stuff/tmp/work/armv7a-angstrom-linux-gnueabi/cphone-1.0.0-r1/mainThread.cpp:68: undefined reference to `__cxa_end_catch'
| /home/hnsl/stuff/tmp/work/armv7a-angstrom-linux-gnueabi/cphone-1.0.0-r1/mainThread.cpp:68: undefined reference to `__cxa_end_cleanup'
| /tmp/ccW4SVb4.o: In function `__static_initialization_and_destruction_0':
| /home/hnsl/stuff/tmp/sysroots/x86_64-linux/usr/armv7a/lib/gcc/arm-angstrom-linux-gnueabi/4.5.3/../../../../arm-angstrom-linux-gnueabi/include/c++/4.5.3/iostream:73: undefined reference to `std::ios_base::Init::Init()'
| /home/hnsl/stuff/tmp/sysroots/x86_64-linux/usr/armv7a/lib/gcc/arm-angstrom-linux-gnueabi/4.5.3/../../../../arm-angstrom-linux-gnueabi/include/c++/4.5.3/iostream:73: undefined reference to `std::ios_base::Init::~Init()'
| /home/hnsl/stuff/tmp/sysroots/x86_64-linux/usr/armv7a/lib/gcc/arm-angstrom-linux-gnueabi/4.5.3/../../../../arm-angstrom-linux-gnueabi/include/c++/4.5.3/iostream:73: undefined reference to `std::ios_base::Init::~Init()'
| /tmp/ccW4SVb4.o:(.ARM.extab+0x0): undefined reference to `__gxx_personality_v0'
| /tmp/ccW4SVb4.o:(.ARM.extab+0x28): undefined reference to `typeinfo for char const*'
| /tmp/ccUEShoN.o: In function `endOnError(void*, int, char*)':
| /home/hnsl/stuff/tmp/work/armv7a-angstrom-linux-gnueabi/cphone-1.0.0-r1/lib.cpp:23: undefined reference to `__cxa_allocate_exception'
| /home/hnsl/stuff/tmp/work/armv7a-angstrom-linux-gnueabi/cphone-1.0.0-r1/lib.cpp:23: undefined reference to `typeinfo for char const*'
| /home/hnsl/stuff/tmp/work/armv7a-angstrom-linux-gnueabi/cphone-1.0.0-r1/lib.cpp:23: undefined reference to `typeinfo for char const*'
| /home/hnsl/stuff/tmp/work/armv7a-angstrom-linux-gnueabi/cphone-1.0.0-r1/lib.cpp:23: undefined reference to `__cxa_throw'
| /tmp/ccUEShoN.o: In function `initFramework(char**, void**, PaStreamParameters*, PaStreamParameters*)':
| /home/hnsl/stuff/tmp/work/armv7a-angstrom-linux-gnueabi/cphone-1.0.0-r1/lib.cpp:32: undefined reference to `__cxa_allocate_exception'
| /home/hnsl/stuff/tmp/work/armv7a-angstrom-linux-gnueabi/cphone-1.0.0-r1/lib.cpp:32: undefined reference to `typeinfo for char const*'
| /home/hnsl/stuff/tmp/work/armv7a-angstrom-linux-gnueabi/cphone-1.0.0-r1/lib.cpp:32: undefined reference to `typeinfo for char const*'
| /home/hnsl/stuff/tmp/work/armv7a-angstrom-linux-gnueabi/cphone-1.0.0-r1/lib.cpp:32: undefined reference to `__cxa_throw'
| /home/hnsl/stuff/tmp/work/armv7a-angstrom-linux-gnueabi/cphone-1.0.0-r1/lib.cpp:37: undefined reference to `__cxa_allocate_exception'
| /home/hnsl/stuff/tmp/work/armv7a-angstrom-linux-gnueabi/cphone-1.0.0-r1/lib.cpp:37: undefined reference to `typeinfo for char const*'
| /home/hnsl/stuff/tmp/work/armv7a-angstrom-linux-gnueabi/cphone-1.0.0-r1/lib.cpp:37: undefined reference to `typeinfo for char const*'
| /home/hnsl/stuff/tmp/work/armv7a-angstrom-linux-gnueabi/cphone-1.0.0-r1/lib.cpp:37: undefined reference to `__cxa_throw'
| collect2: ld returned 1 exit status

由于

1 个答案:

答案 0 :(得分:1)

您真的应该使用g++来编译和链接C ++代码。它将负责为标准C ++库添加正确的包含路径和链接器选项。

可以使用gcc执行此操作,但始终使用g++进行编译和链接更容易。