Как получить компилятор C ++ Crosstool-NG работает

Я пытаюсь заставить crosstool-ng работать с C и C ++. Несмотря на то, что я выбрал C ++ при использовании menuconfig, он, похоже, не создается. Компилятор gcc работает как положено, но не g ++

Я не уверен, что я делаю неправильно, поэтому любая помощь будет оценена.

Я следовал за шагами, найденными здесь:
Создание встроенных ARM-систем с помощью Crosstool-NG

$ arm-unknown-linux-gnueabi-cpp main.cpp -o test
arm-unknown-linux-gnueabi-cpp: main.cpp: C++ compiler not installed on this system

ПРИМЕЧАНИЕ: нет arm-unknown-linux-gnueabi-g++ находится в каталоге bin.
Я пробовал кросс-инструмент версии 1.16.0 и 1.15.3

arm-unknown-linux-gnueabi-cpp -v
Using built-in specs.
Target: arm-unknown-linux-gnueabi
Configured with: /opt/crossArm/.build/src/gcc-4.3.2/configure --build=i686-build_pc-linux-gnu --host=i686-build_pc-linux-gnu --target=arm-unknown-linux-gnueabi --prefix=/opt/crossArm/.build/arm-unknown-linux-gnueabi/buildtools --with-local-prefix=/home/jgarvin/x-tools/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sysroot --disable-libmudflap --with-sysroot=/home/jgarvin/x-tools/arm-unknown-linux-gnueabi/arm-unknown-linux-gnueabi/sysroot --enable-shared --with-pkgversion='crosstool-NG 1.16.0' --with-float=soft --enable-__cxa_atexit --with-gmp=/opt/crossArm/.build/arm-unknown-linux-gnueabi/buildtools --with-mpfr=/opt/crossArm/.build/arm-unknown-linux-gnueabi/buildtools --enable-target-optspace --disable-libgomp --disable-libmudflap --disable-nls --disable-multilib --enable-languages=c
Thread model: posix
gcc version 4.3.2 (crosstool-NG 1.16.0)

Код

#include<iostream>

using namespace std;

int main(){
cout<<"Hello World"<<endl;
return 0;
}

В моем build.log файл я вижу опцию C ++ включена

[DEBUG]    CT_CC_SUPPORT_CXX=y

Я также вижу это в config.log:

configure:3030: $? = 0
configure:3019: gcc -v >&5
Using built-in specs.
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/lib/gcc/i686-linux-gnu/4.6/lto-wrapper
Target: i686-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.6.3-1ubuntu5' --with-bugurl=file:///usr/share/doc/gcc-4.6/README.Bugs --enable-languages=c,c++,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.6 --enable-shared --enable-linker-build-id --with-system-zlib --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.6 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin --enable-objc-gc --enable-targets=all --disable-werror --with-arch-32=i686 --with-tune=generic --enable-checking=release --build=i686-linux-gnu --host=i686-linux-gnu --target=i686-linux-gnu

3

Решение

От, http://briolidz.wordpress.com/2012/02/07/building-embedded-arm-systems-with-crosstool-ng/

Уточните свою конфигурацию, запустив интерфейс menuconfig:

$ ./ct-ng menuconfig

На этом этапе перейдите к Компилятор Си меню. Затем вы можете выбрать C ++ или отмените выбор Джава, Фортран, и т. д. с crosstool-нг это просто набор сценариев и файлов исправлений, очень редко, когда сборка разработки ломает вещи. Вы всегда можете вытащить из ртуть репозиторий.

рт клон http://crosstool-ng.org/hg/crosstool-ng

cd crosstool-ng

./ начальной загрузки

делать

sudo make install

Это будет иметь последние исправления. Я многократно создавал кросс-компиляторы с поддержкой C ++, используя этот метод [включая Канадские кресты для Mingw и i386 с хоста x86_64].

РЕДАКТИРОВАТЬ: Я вижу, что WordPress ссылка рекомендует локальную установку CT-нг. Команды выше делают полную установку, помещая вещи в / USR / местные. Кроме того, кажется, что OP попытался установить опцию menuconfig C ++. Попробуйте изменить sjlj значение, используйте последнюю версию CT-нг и установите его. Это создает для меня кросс-компилятор ARM Linux C ++ в Ubuntu. build.log выход может быть полезным при определении CT-нг решил, что некоторые настройки были невозможны.

Наконец, список рассылки crossgcc@sourceware.org не требует подписки. Архивы в http://sourceware.org/ml/crossgcc/ может быть полезным Если у вас все еще есть проблемы, я уверен, что кто-то из списка рассылки сможет вам помочь.

РЕДАКТИРОВАТЬ: С последним CT-нг Установил попробовать,

$ ct-ng arm-cortex_a15-linux-gnueabi # Alternate рука-Ем-линукс-gnueabi
$ ct-ng menuconfig # Твик для вашего процессора, версии gcc и т. д.
$ ct-ng build # Пойди выпей кофе (или поработай над чем-нибудь еще).

Извините, ваш компилятор был сделан с помощью Linaro. Я слишком много читал в твои правки.

2

Другие решения

У меня была похожая проблема. Оказывается, я смотрел не тот каталог bin .build, Окончательная версия набора инструментов была установлена ​​под ~/x-tools вместо…

1

Если вы все еще ищете ответ по компиляции c ++ на платформе arm:

Установите crosstool-ng:

tar xjf <ct-ng archive>
cd crosstool-ng-<numversion>
# reset of LD_LIBRARY_PATH is required to avoid issues with crosstool-ng
unset LD_LIBRARY_PATH
./configure prefix=<installDir>
#example ./configure prefix=/opt/cross-rpi
make
make install
#required to make sure you get the right on in case
export PATH=<installDir>/bin:$PATH
#check what version is on now.
which ct-ng

Теперь создайте и запустите конфигурацию:

mkdir chain-build #the directory hosting the build files of your cross compil chain
cd chain-build
ct-ng menuconfig

Опции набора относятся к платформе руки среди других:

Пути и разные варианты

  • Настройте максимальный уровень журнала, чтобы увидеть WARN вместо ИНФОРМАЦИЯ что полностью загромождает бревна и, на мой взгляд, делает их трудными в использовании, слишком много шума для обычного варианта использования.

Целевые параметры Операционная система

  • Целевая Архитектура

    • рука
  • система

    • линукс

Бинарные утилиты
— Выберите последнюю версию binutils

Компилятор Си

  • GCC: Выбрать Показать версии linaro затем выберите последнюю версию linaro gcc (по опыту более стабильную, чем non linaro)

  • C ++: проверьте это
    проверка c ++

Теперь создайте свой инструментарий

ct-ng build
# once done check the content of the bin dir
ls <yourChainInstallDir>/x-tools/arm-unknown-linux-gnueabi/bin

Вы должны получить что-то вроде этого:
двоичные файлы

из всего, что нужно для компиляции кода на C ++, вам нужен только g ++. Чтобы проверить, работает ли g ++ (для рук), наберите

arm-unknown-linux-gnueabi-g++ -v

Вы должны получить что-то похожее на это:

Using built-in specs.
COLLECT_GCC=x-tools/arm-unknown-linux-gnueabi/bin/arm-unknown-linux-gnueabi-g++
COLLECT_LTO_WRAPPER=/opt/cross1.19/x-tools/arm-unknown-linux-gnueabi/libexec/gcc/arm-        unknown-linux-gnueabi/4.8.2/lto-wrapper
Target: arm-unknown-linux-gnueabi
[...]
blahblah
[...]
gcc version 4.8.2 20130603 (prerelease) (crosstool-NG 1.19.0)

Как только вы получите это сообщение, вы должны быть в порядке.

Единственное, на что нужно обращать внимание, это если у вас есть все библиотеки необходимо для компиляции вашего кода.

например например, на Raspberry-pi (используя Raspbian), некоторые из библиотек необходимо импортировать вручную из / Lib а также / USR / Lib (поместите затем в свой LD_LIBRARY_PATH).

Иногда include для gcc или g ++ не копируются в каталог include цепочки инструментов (когда при использовании crosstool-ng возникла проблема пару раз), поэтому вам нужно получить include из вашего каталога / usr / include.

0