Перейти к содержанию
    

Куда при сборке gcc с сорсов написать -mfloat-abi=hard ?

Добрый день,

 

есть ембеддед линукс, вернее его вариант на DE10-Nano или DE0-Nano-SoC на нем стоит

Quote

 

Linux de10-nano 4.1.33-ltsi-altera #1 SMP Thu Mar 30 10:37:56 PDT 2017 armv7l GNU/Linux

 

с очень стародавним репозитарием на http://feeds.angstrom-distribution.org/feeds/v2016.12/

в котором нет lapack/blas, и есть желание собрать gcc, по возможности новее (или какой получится) с исходников, но чтоб там точно был gfortran и не менее С++14.

Пробовал gcc-10.2, gcc-9-3, gcc-linaro-7.5 собирать там, и кросскомпиллить на 20.04 убунте. Во всех случаях после пары часов сборки возникает ошибка:

Quote

/mnt/data/1/gcc-l1/./gcc/xgcc -B/mnt/data/1/gcc-l1/./gcc/ -B/usr/local/armv7l-unknown-linux-gnueabihf/bin/ -B/usr/local/armv7l-unknown-linux-gnueabihf/lib/ -isystem /usr/local/armv7l-unknown-linux-gnueabihf/include -isystem /usr/local/armv7l-unknown-linux-gnueabihf/sys-include    -g -O2 -O2  -g -O2 -DIN_GCC    -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wno-format -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition  -isystem ./include   -fPIC -fno-inline -g -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector   -fPIC -fno-inline -I. -I. -I../.././gcc -I../../../gcc-linaro-snapshot-7.5-2019.11/libgcc -I../../../gcc-linaro-snapshot-7.5-2019.11/libgcc/. -I../../../gcc-linaro-snapshot-7.5-2019.11/libgcc/../gcc -I../../../gcc-linaro-snapshot-7.5-2019.11/libgcc/../include  -DHAVE_CC_TLS  -o _negdi2.o -MT _negdi2.o -MD -MP -MF _negdi2.dep -DL_negdi2 -c ../../../gcc-linaro-snapshot-7.5-2019.11/libgcc/libgcc2.c -fvisibility=hidden -DHIDE_EXPORTS
In file included from /usr/include/features.h:392:0,
                 from /usr/include/stdio.h:27,
                 from ../../../gcc-linaro-snapshot-7.5-2019.11/libgcc/../gcc/tsystem.h:87,
                 from ../../../gcc-linaro-snapshot-7.5-2019.11/libgcc/libgcc2.c:27:
/usr/include/gnu/stubs.h:7:11: fatal error: gnu/stubs-soft.h: No such file or directory
 # include <gnu/stubs-soft.h>
           ^~~~~~~~~~~~~~~~~~
compilation terminated.
make[3]: *** [Makefile:491: _muldi3.o] Error 1
make[3]: *** Waiting for unfinished jobs....
In file included from /usr/include/features.h:392:0,
                 from /usr/include/stdio.h:27,
                 from ../../../gcc-linaro-snapshot-7.5-2019.11/libgcc/../gcc/tsystem.h:87,
                 from ../../../gcc-linaro-snapshot-7.5-2019.11/libgcc/libgcc2.c:27:
/usr/include/gnu/stubs.h:7:11: fatal error: gnu/stubs-soft.h: No such file or directory
 # include <gnu/stubs-soft.h>
           ^~~~~~~~~~~~~~~~~~
compilation terminated.
make[3]: *** [Makefile:491: _negdi2.o] Error 1
make[3]: Leaving directory '/mnt/data/1/gcc-l1/armv7l-unknown-linux-gnueabihf/libgcc'
make[2]: *** [Makefile:18001: all-stage1-target-libgcc] Error 2
make[2]: Leaving directory '/mnt/data/1/gcc-l1'
make[1]: *** [Makefile:22758: stage1-bubble] Error 2
make[1]: Leaving directory '/mnt/data/1/gcc-l1'
make: *** [Makefile:932: all] Error 2

Гугление на эту ошибку приводит к тому, что надо установить -mfloat-abi=hard во время компиляции.

Я пробовал собирать с такими флагами:

Quote

make BOOT_CFLAGS='-mfloat-abi=hard -O2' -j 2

дополнительно засовывал в Makefile в каждый вызов компилера '-mfloat-abi=hard' но падать не перестает.

 

В репозитарии прикомпилленого gfortran нет, в linaro подходящего уже собраннного gcc, который содержит хотя бы c,c++,fortran - тоже нет.

 

Пожалуйста, посоветуйте, что я делаю не так и куда правильно надо поместить эту опцию, чтобы избавитться от ошибки компилляции gcc c сорсов?

 

Спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Здесь важно с какими параметрами делали configure, в make не надо ничего передавать. Сначала наверно надо binutils установить, собрать временный gcc, им собрать glibc (или другую libc), а после уже собирать финальную версию gcc. Давно вручную не собирал, не помню точно.

 

Можно попробовать вот здесь почитать, или спросить у автора темы.

 

Изменено пользователем amaora

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как уже сказали, это опция configure.

Куда её написать, можно прочитать здесь: https://gcc.gnu.org/install/configure.html

Изменено пользователем one_eight_seven

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не может найти файл gnu/stubs-soft.h. 
Чем добавлять к каждому Makefile,  поставьте в командную строку как вы делали: make BOOT_CFLAGS='-mfloat-abi=hard', но поскольку это флаги компилятора, то надо написать:

make CFLAGS='-mfloat-abi=hard'

 

Поищите в мейк файлах какую переменную используют для флагов компилятора. Обычно это CFLAGS.

Посмотрите какой переменной в Makefile (одном из) присваиваются вместе или поодиночке опции (достаточно найти любую из них):
-g -O2 -DIN_GCC    -W -Wall -Wno-narrowing -Wwrite-strings -Wcast-qual -Wno-format -Wstrict-prototypes -Wmissing-prototypes -Wold-style-definition  -isystem  -fPIC -fno-inline -DIN_LIBGCC2 -fbuilding-libgcc -fno-stack-protector   -fno-inline

Если эта переменная не похожа на CFLAGS, то значит она будет использована позже для присвоения ее значения CFLAGS. Будет что-то вроде CFLAGS += -g -O2 и т.д..  

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо большое, всем помогавшим и сочувствовавшим!

 

Пробовал и в конфиг параметры передать:

 

./configure --with-float-abi=hard

и в Makefile

make CFLAGS='-mfloat-abi=hard'

 

и даже залинковать soft include на hard include

 

и дописывал дополнительно -march=armv7-a, -mfpu=neon, а в одной из попыток попробовал поставить --disable-multilib

 

все разы падает, иногда правда проходит дальше, но все равно собирается не правильно и вникают ошибки.

 

Скажите, пожалуйста, правильно ли я понимаю, что единственное оставшееся решение собирать на обычном компе, то есть crosscompile, мне правда надо, чтобы компилятор после сборки работал на arm, то есть на самой плате de10-nano, то есть какая-то часть сборки-проверки рабочести компилятора должна быть опущена, так?

 

Спасибо!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 3/23/2021 at 4:59 AM, iiv said:

все разы падает, иногда правда проходит дальше, но все равно собирается не правильно и вникают ошибки.

 

Значит кроме описанной проблемы есть и друге.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...