Hi, all
I have updated my test case:
Compile passed but failed while linking.
wentao@ubuntu:~/test/lamda$ cat a.cc #include <iostream> using namespace std;
int main() { auto f = [=]() { cout <<"Hello world"<<endl; }; f(); return 0; }
wentao@ubuntu:~/test/lamda$ arm-eabi-g++ --std=gnu++11 a.cc -o arm32 /home/wentao/TeeOS/tools/gcc-linaro-6.3.1-2017.05-x86_64_arm-eabi/bin/../lib/gcc/arm-eabi/6.3.1/../../../../arm-eabi/lib/libstdc++.a(locale.o): In function `get_locale_cache_mutex': /home/tcwg-buildslave/workspace/tcwg-make-release/builder_arch/amd64/label/tcwg-x86_64-build/target/arm-eabi/snapshots/gcc.git~linaro-6.3-2017.05/libstdc++-v3/src/c++98/locale.cc:36: undefined reference to `__sync_synchronize' /home/wentao/TeeOS/tools/gcc-linaro-6.3.1-2017.05-x86_64_arm-eabi/bin/../lib/gcc/arm-eabi/6.3.1/../../../../arm-eabi/lib/libstdc++.a(future.o): In function `__future_category_instance': /home/tcwg-buildslave/workspace/tcwg-make-release/builder_arch/amd64/label/tcwg-x86_64-build/target/arm-eabi/snapshots/gcc.git~linaro-6.3-2017.05/libstdc++-v3/src/c++11/future.cc:64: undefined reference to `__sync_synchronize' /home/wentao/TeeOS/tools/gcc-linaro-6.3.1-2017.05-x86_64_arm-eabi/bin/../lib/gcc/arm-eabi/6.3.1/../../../../arm-eabi/lib/libstdc++.a(locale_init.o): In function `(anonymous namespace)::get_locale_mutex()': /home/tcwg-buildslave/workspace/tcwg-make-release/builder_arch/amd64/label/tcwg-x86_64-build/target/arm-eabi/snapshots/gcc.git~linaro-6.3-2017.05/libstdc++-v3/src/c++98/locale_init.cc:66: undefined reference to `__sync_synchronize' collect2: error: ld returned 1 exit status wentao@ubuntu:~/test/lamda$
������: zhangwentao (M) ����ʱ��: 2018��1��10�� 10:22 �ռ���: 'linaro-toolchain@lists.linaro.org' ����: Huangqiang (H); Lizefan; leijitang ����: Does linaro toolchain support c++11 ??
Hi all,
I wonder if my compiler supports C++11? If not, where could I found the compiler supports c++11 (both 32bit and 64bit arm).
THANKS a lot~~~
My compiler information is as below:
wentao@ubuntu:~/test/lamda$ arm-eabi-g++ -v Using built-in specs. COLLECT_GCC=arm-eabi-g++ COLLECT_LTO_WRAPPER=/home/wentao/TeeOS/tools/gcc-linaro-6.3.1-2017.05-x86_64_arm-eabi/bin/../libexec/gcc/arm-eabi/6.3.1/lto-wrapper Target: arm-eabi Configured with: '/home/tcwg-buildslave/workspace/tcwg-make-release/builder_arch/amd64/label/tcwg-x86_64-build/target/arm-eabi/snapshots/gcc.git~linaro-6.3-2017.05/configure' SHELL=/bin/bash --with-mpc=/home/tcwg-buildslave/workspace/tcwg-make-release/builder_arch/amd64/label/tcwg-x86_64-build/target/arm-eabi/_build/builds/destdir/x86_64-unknown-linux-gnu --with-mpfr=/home/tcwg-buildslave/workspace/tcwg-make-release/builder_arch/amd64/label/tcwg-x86_64-build/target/arm-eabi/_build/builds/destdir/x86_64-unknown-linux-gnu --with-gmp=/home/tcwg-buildslave/workspace/tcwg-make-release/builder_arch/amd64/label/tcwg-x86_64-build/target/arm-eabi/_build/builds/destdir/x86_64-unknown-linux-gnu --with-gnu-as --with-gnu-ld --disable-libmudflap --enable-lto --enable-shared --without-included-gettext --enable-nls --disable-sjlj-exceptions --enable-gnu-unique-object --enable-linker-build-id --disable-libstdcxx-pch --enable-c99 --enable-clocale=gnu --enable-libstdcxx-debug --enable-long-long --with-cloog=no --with-ppl=no --with-isl=no --enable-multilib --with-multilib-list=aprofile --enable-threads=no --disable-multiarch --with-newlib --with-build-sysroot=/home/tcwg-buildslave/workspace/tcwg-make-release/builder_arch/amd64/label/tcwg-x86_64-build/target/arm-eabi/_build/sysroots/arm-eabi --with-sysroot=/home/tcwg-buildslave/workspace/tcwg-make-release/builder_arch/amd64/label/tcwg-x86_64-build/target/arm-eabi/_build/builds/destdir/x86_64-unknown-linux-gnu/arm-eabi/libc --enable-checking=release --disable-bootstrap --enable-languages=c,c++,lto --build=x86_64-unknown-linux-gnu --host=x86_64-unknown-linux-gnu --target=arm-eabi --prefix=/home/tcwg-buildslave/workspace/tcwg-make-release/builder_arch/amd64/label/tcwg-x86_64-build/target/arm-eabi/_build/builds/destdir/x86_64-unknown-linux-gnu Thread model: single gcc version 6.3.1 20170404 (Linaro GCC 6.3-2017.05) wentao@ubuntu:~/test/lamda$
===> And more, I wrote a ��hello-world�� program using c++11, it could work with host g++, but when I change to ��arm-eabi-g++��, it does not work. Information as below:
wentao@ubuntu:~/test/lamda$ cat a.cc #include <iostream> using namespace std;
typedef void(*Func)(); int main() { Func f = [=]() { cout <<"Hello world"<<endl; }; f(); return 0; } wentao@ubuntu:~/test/lamda$ g++ a.cc -o host a.cc: In function ��int main()��: a.cc:10:2: warning: lambda expressions only available with -std=c++11 or -std=gnu++11 [enabled by default] }; ^ wentao@ubuntu:~/test/lamda$ ./host Hello world wentao@ubuntu:~/test/lamda$ arm-eabi-g++ a.cc -o arm32 a.cc: In function ��int main()��: a.cc:10:2: error: cannot convert ��main()::<lambda()>�� to ��Func {aka void (*)()}�� in initialization }; ^ wentao@ubuntu:~/test/lamda$ arm-eabi-g++ --std=gnu++11 a.cc -o arm32 # if gives �Cstd=c++11 , the error is the same. a.cc: In function ��int main()��: a.cc:10:2: error: cannot convert ��main()::<lambda()>�� to ��Func {aka void (*)()}�� in initialization }; ^ wentao@ubuntu:~/test/lamda$