LINUX.ORG.RU

stdio.h: No such file or directory

 , , ,


0

1

$ sudo make

/usr/bin/arm-none-eabi-gcc -c -o arch_011_udd/ump_frontend.o arch_011_udd/ump_frontend.c -I./include -I./include/ump -Wall -march=armv6 -mthumb-interwork -fno-strict-aliasing -Wno-strict-aliasing -Wno-long-long -O3
In file included from arch_011_udd/ump_frontend.c:27:0:
./include/ump/ump_debug.h:45:19: fatal error: stdio.h: No such file or directory
 #include <stdio.h>
                   ^
compilation terminated.
Makefile:28: recipe for target 'arch_011_udd/ump_frontend.o' failed
make: *** [arch_011_udd/ump_frontend.o] Error 1
stdio.h где-то потерялся. Какой пакет установить, что бы эта библеотека появилась?



Последнее исправление: Webenot (всего исправлений: 7)

Я изменил Makefile и указал компилятор который есть в системе: CROSS_COMPILE ?= gcc

Запустился процесс компиляции, но на середине возникла ошибка: /usr/include/arm-linux-gnueabihf/bits/stdio.h:45:1: sorry, unimplemented: Thumb-1 hard-float VFP ABI { ^ Makefile:28: recipe for target 'arch_011_udd/ump_frontend.o' failed make: *** [arch_011_udd/ump_frontend.o] Error 1

Первое: В stdio.h с42 по37 строку: /* Read a character from stdin. */ __STDIO_INLINE int getchar (void) { return _IO_getc (stdin); }

Второе: В makefile на 28 строке: TARGET_CC ?= $(CROSS_COMPILE) $(TARGET_CC) -c -o $@ $< $(CFLAGS) Как я говорил раньше CROSS_COMPILE указал как gcc по этому тут вообще не понимаю.

Третее: Тут вообще ничего не понял make: *** [arch_011_udd/ump_frontend.o] Error 1

Webenot
() автор топика

Не могу понять, почему при сборке он не видит gcc-arm-none-eabigcc

Потому что такого файла нет в PATH.

Как правильно указать кросскомиляию?

Зависит от системы сборки.

anonymous
()
Ответ на: комментарий от anonymous

После установки он не появился даже в папке /usr/bin/ Хотя там имеются различные gcc.

Как указать его в PATH? Как узнать систему сборки?

Webenot
() автор топика
Ответ на: комментарий от XMs

Благодарю! Отличные возможности есть в этом форуме.

Webenot
() автор топика
Ответ на: комментарий от Webenot

После установки он не появился даже в папке /usr/bin/

А должен?

Как узнать систему сборки?

Она у тебя уже известна — Makefile.

anonymous
()
Ответ на: комментарий от cyber_eagle

Вывод на запрос «apt show gcc-arm-none-eabi»:

Package: gcc-arm-none-eabi
Version: 15:4.9.3+svn231177-1
Priority: extra
Section: universe/devel
Origin: Ubuntu
Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Original-Maintainer: Agustin Henze <tin@debian.org>
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 106 MB
Depends: libc6 (>= 2.11), libgmp10, libmpc3, libmpfr4 (>= 3.1.3), zlib1g (>= 1:1.1.4), binutils-arm-none-eabi
Recommends: libnewlib-arm-none-eabi
Homepage: http://gcc.gnu.org/
Download-Size: 15,4 MB
APT-Manual-Installed: yes
APT-Sources: http://ports.ubuntu.com xenial/universe armhf Packages
Description: GCC cross compiler for ARM Cortex-A/R/M processors
 Bare metal compiler for embedded ARM chips using Cortex-M, Cortex-R and
 Cortex-A processors.
 This package is based on the GNU ARM toolchain provided by ARM.

На что стоит обратить внимание?

Webenot
() автор топика
Ответ на: комментарий от anonymous

Не могу найти gcc-arm-none-eabi

А отличается ли он чем-то от обычного gcc? Мне нужно скомпилировать код на мою машину.

Webenot
() автор топика
Ответ на: комментарий от cyber_eagle

Вывод на «gcc-arm-none-eabi -h»:

gcc-arm-none-eabi: command not found

Webenot
() автор топика
Ответ на: комментарий от anonymous

Отлично. Проблема с поиском этого компилятора решилась. Спасибо. Но есть еще пара проблем при компиляции:

/usr/bin/arm-none-eabi-gcc -c -o arch_011_udd/ump_frontend.o arch_011_udd/ump_frontend.c -I./include -I./include/ump -Wall -march=armv6 -mthumb-interwork -fno-strict-aliasing -Wno-strict-aliasing -Wno-long-long -O3
In file included from arch_011_udd/ump_frontend.c:27:0:
./include/ump/ump_debug.h:45:19: fatal error: stdio.h: No such file or directory
 #include <stdio.h>
                   ^
compilation terminated.
Makefile:28: recipe for target 'arch_011_udd/ump_frontend.o' failed
make: *** [arch_011_udd/ump_frontend.o] Error 1

Webenot
() автор топика
Ответ на: комментарий от Webenot

Наверное тебе другой пакет нужен, gcc-arm-none-eabi как я понял под только под bare metal, т.е. заголовков libc и т.п. он за собой не тянет. Попробуй gcc-arm-linux-gnueabihf.

anonymous
()
Ответ на: комментарий от anonymous

Доступен только один пакет с названия gcc-arm* - это только gcc-arm-none-eabi. в репозитории нет указанного Вами пакета. Сейчас поищу в интернете. Его тоже компелировать придется?

Webenot
() автор топика
Ответ на: комментарий от Webenot

Всё там есть, научись уже менеджером пакетов пользоваться:

$ apt-cache search 'gcc.*arm-linux' |sort
gcc-5-arm-linux-gnueabi - GNU C compiler
gcc-5-arm-linux-gnueabi-base - GCC, the GNU Compiler Collection (base package)
gcc-5-arm-linux-gnueabihf - GNU C compiler
gcc-5-arm-linux-gnueabihf-base - GCC, the GNU Compiler Collection (base package)
gcc-5-plugin-dev-arm-linux-gnueabi - Files for GNU GCC plugin development.
gcc-5-plugin-dev-arm-linux-gnueabihf - Files for GNU GCC plugin development.
gcc-6-arm-linux-gnueabi - GNU C compiler
gcc-6-arm-linux-gnueabi-base - GCC, the GNU Compiler Collection (base package)
gcc-6-arm-linux-gnueabihf - GNU C compiler
gcc-6-arm-linux-gnueabihf-base - GCC, the GNU Compiler Collection (base package)
gcc-6-plugin-dev-arm-linux-gnueabi - Files for GNU GCC plugin development.
gcc-6-plugin-dev-arm-linux-gnueabihf - Files for GNU GCC plugin development.
gcc-7-arm-linux-gnueabi - GNU C compiler
gcc-7-arm-linux-gnueabi-base - GCC, the GNU Compiler Collection (base package)
gcc-7-arm-linux-gnueabihf - GNU C compiler
gcc-7-arm-linux-gnueabihf-base - GCC, the GNU Compiler Collection (base package)
gcc-7-plugin-dev-arm-linux-gnueabi - Files for GNU GCC plugin development.
gcc-7-plugin-dev-arm-linux-gnueabihf - Files for GNU GCC plugin development.
gcc-8-arm-linux-gnueabi - GNU C compiler
gcc-8-arm-linux-gnueabi-base - GCC, the GNU Compiler Collection (base package)
gcc-8-arm-linux-gnueabihf - GNU C compiler
gcc-8-arm-linux-gnueabihf-base - GCC, the GNU Compiler Collection (base package)
gcc-8-plugin-dev-arm-linux-gnueabi - Files for GNU GCC plugin development.
gcc-8-plugin-dev-arm-linux-gnueabihf - Files for GNU GCC plugin development.
gcc-arm-linux-gnueabi - GNU C compiler for the armel architecture
gcc-arm-linux-gnueabihf - GNU C compiler for the armhf architecture
gccgo-5-arm-linux-gnueabi - GNU Go compiler
gccgo-5-arm-linux-gnueabihf - GNU Go compiler
gccgo-6-arm-linux-gnueabi - GNU Go compiler
gccgo-6-arm-linux-gnueabihf - GNU Go compiler
gccgo-7-arm-linux-gnueabi - GNU Go compiler
gccgo-7-arm-linux-gnueabihf - GNU Go compiler
gccgo-8-arm-linux-gnueabi - GNU Go compiler
gccgo-8-arm-linux-gnueabihf - GNU Go compiler
gccgo-arm-linux-gnueabi - Go compiler (based on GCC) for the armel architecture
gccgo-arm-linux-gnueabihf - Go compiler (based on GCC) for the armhf architecture

anonymous
()
Ответ на: комментарий от DuMOHsmol

Я поставил в gcc в makefile:

CROSS_COMPILE ?= gcc
Компиляция пошла, но на одном этапе ему нехватает stdio.h:
$ sudo make[sudo] password for user: 
gcc -c -o arch_011_udd/ump_frontend.o arch_011_udd/ump_frontend.c -I./include -I./include/ump -Wall -march=armv6 -mthumb-interwork -fno-strict-aliasing -Wno-strict-aliasing -Wno-long-long -O3
In file included from /usr/include/stdio.h:933:0,
                 from ./include/ump/ump_debug.h:45,
                 from arch_011_udd/ump_frontend.c:27:
/usr/include/arm-linux-gnueabihf/bits/stdio.h: In function ‘getchar’:
/usr/include/arm-linux-gnueabihf/bits/stdio.h:44:1: sorry, unimplemented: Thumb-1 hard-float VFP ABI
 getchar (void){
 ^
Makefile:28: recipe for target 'arch_011_udd/ump_frontend.o' failed
make: *** [arch_011_udd/ump_frontend.o] Error 1

Webenot
() автор топика
Ответ на: комментарий от Webenot

Что-то не то с настройкой компилятора, походу. Здесь пишут, что GCC не поддерживает флаг -arch=armv6, попробуй от него избавиться.

DuMOHsmol
()
Последнее исправление: DuMOHsmol (всего исправлений: 1)
Ответ на: комментарий от Webenot

Ему не хватает аппаратной работы с числами с плавающей точкой, а не stdio.h. Или ты неправильные ключи компилятору передаёшь, или неправильный тулчейн/версию дистрибутива поставил, или твой проц не имеет аппаратной поддержки числами с плавающей точкой.

anonymous
()
Ответ на: комментарий от anonymous

Благодарю. Это изменило проблему, теперь из ошибок только это:

/usr/bin/ld: ./arch_011_udd/ump_frontend.o: relocation R_ARM_THM_MOVW_ABS_NC against `a local symbol' can not be used when making a shared object; recompile with -fPIC
./arch_011_udd/ump_frontend.o: error adding symbols: Bad value
collect2: error: ld returned 1 exit status
Makefile:33: recipe for target 'libUMP.so' failed
make: *** [libUMP.so] Error 1

В 33 строке makefile'а:

$(TARGET_CC) -shared -o $@ $(UMP_OBJS) $(CFLAGS)

Webenot
() автор топика
Ответ на: комментарий от anonymous

Насколько я помню, аппаратной поддержки работы с числами, вроде только эмуляция. А подробнее можете обьяснить о совместимости тулчейна и дистрибутива? Как можно проверить это?

Webenot
() автор топика
Ответ на: комментарий от Webenot

Смотришь в документации производителя железки, есть ли там аппаратная плавающая точка. Если есть, то ставишь туда например дебиан и тулчейн armhf, а если нету, то armel.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.