Jump to content

    
Sign in to follow this  
iiv

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

Recommended Posts

Добрый день,

 

есть ембеддед линукс, вернее его вариант на 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 сорсов?

 

Спасибо!

Share this post


Link to post
Share on other sites

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

 

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

 

Edited by amaora

Share this post


Link to post
Share on other sites

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

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

Edited by one_eight_seven

Share this post


Link to post
Share on other sites

Не может найти файл 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 и т.д..  

Share this post


Link to post
Share on other sites

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

 

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

 

./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, то есть какая-то часть сборки-проверки рабочести компилятора должна быть опущена, так?

 

Спасибо!

Share this post


Link to post
Share on other sites
On 3/23/2021 at 4:59 AM, iiv said:

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

 

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this