ev_zubkov 0 25 июля, 2022 Опубликовано 25 июля, 2022 (изменено) · Жалоба Доброго времени суток. Пытаюсь собрать прошивку под мк из командной строки. Линковщик почему-то не видит стандартную библиотеку и завершается с ошибками: /opt/arm/gcc-arm-none-eabi-10.3-2021.10/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/bin/ld: app.o: in function `shiftQueue': app.c:152: undefined reference to `__aeabi_idivmod' /opt/arm/gcc-arm-none-eabi-10.3-2021.10/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/bin/ld: app.o: in function `clearqueue': app.c:180: undefined reference to `__aeabi_idivmod' /opt/arm/gcc-arm-none-eabi-10.3-2021.10/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/bin/ld: app.o: in function `assignReactSint32': app.c:379: undefined reference to `sprintf' /opt/arm/gcc-arm-none-eabi-10.3-2021.10/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/bin/ld: app.o: in function `assignReactSfloat32': app.c:403: undefined reference to `__aeabi_fcmpeq' /opt/arm/gcc-arm-none-eabi-10.3-2021.10/bin/../lib/gcc/arm-none-eabi/10.3.1/../../../../arm-none-eabi/bin/ld: app.o: in function `assignReactSfloat64': app.c:407: undefined reference to `__aeabi_dcmpeq' collect2: error: ld returned 1 exit status Собираю так: arm-none-eabi-gcc -I /opt/arm -I /opt/arm/lib -mcpu=cortex-m0 -mthumb -mfloat-abi=soft -DSTM32 -DSTM32F0 -DSTM32F072xB -DDEBUG -O0 -g3 -Wall -fmessage-length=0 -ffunction-sections -c app.c -o app.o Линкер (UPD): arm-none-eabi-gcc -mcpu=cortex-m0 -mthumb -mfloat-abi=soft -specs=nano.specs -T /opt/arm/lib/dio-022m.ld -Wl,--gc-sections -lm -o app.elf Как правильно указать, что ненайденные функции лежат в стандартной библиотеке? Заранее благодарен за ответы. Изменено 25 июля, 2022 пользователем ev_zubkov Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 62 25 июля, 2022 Опубликовано 25 июля, 2022 · Жалоба On 7/25/2022 at 11:35 AM, ev_zubkov said: Линковщик почему-то не видит стандартную библиотеку и завершается с ошибками: У вас команда запуска линковщика не верная. Она у вас является копией вызова компилятора. Для линковщика должно быть примерно так. arm-none-eabi-gcc app.o -mcpu=cortex-m0 -mthumb -mfloat-abi=soft -Wl,-Map=app.map,--cref -Wl,--gc-sections -o app.elf Может быть вам не стоит пока задавать пути для включаемых файлов. Вот эти -I /opt/arm -I /opt/arm/lib Попробуйте так arm-none-eabi-gcc -mcpu=cortex-m0 -mthumb -mfloat-abi=soft -DSTM32 -DSTM32F0 -DSTM32F072xB -DDEBUG -O0 -g3 -Wall -fmessage-length=0 -ffunction-sections -c app.c -o app.o А вообще, все должно компилироваться без указания стандартных библиотек. Компилятор про свои библиотеки и так все знает. А где вы компилятор взяли ? Не сами собирали случайно ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ev_zubkov 0 25 июля, 2022 Опубликовано 25 июля, 2022 · Жалоба В 25.07.2022 в 17:24, dimka76 сказал: У вас команда запуска линковщика не верная. Она у вас является копией вызова компилятора. Для линковщика должно быть примерно так. Пардон, криво скопировал. Команда выглядит так: arm-none-eabi-gcc -mcpu=cortex-m0 -mthumb -mfloat-abi=soft -specs=nano.specs -T /opt/arm/lib/dio-022m.ld -Wl,--gc-sections -lm -o app.elf Убрал включаемые пути - результат тот же. В 25.07.2022 в 17:24, dimka76 сказал: А где вы компилятор взяли ? Не сами собирали случайно ? Брал отсюда: https://developer.arm.com/downloads/-/gnu-rm Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
dimka76 62 25 июля, 2022 Опубликовано 25 июля, 2022 · Жалоба On 7/25/2022 at 1:48 PM, ev_zubkov said: arm-none-eabi-gcc -mcpu=cortex-m0 -mthumb -mfloat-abi=soft -specs=nano.specs -T /opt/arm/lib/dio-022m.ld -Wl,--gc-sections -lm -o app.elf В вашей строке не хватает app.o On 7/25/2022 at 1:48 PM, ev_zubkov said: Убрал включаемые пути - результат тот же. У меня версия 2020-q2-update под виндой нормально компилирует Spoiler #include <stdint.h> #include <sys/stat.h> #include <stdlib.h> #include <errno.h> #include <stdio.h> #include <signal.h> #include <time.h> #include <sys/time.h> #include <sys/times.h> extern int errno; int _kill(int pid, int sig) { errno = EINVAL; return -1; } void _exit (int status) { _kill(status, -1); while (1) {} /* Make sure we hang here */ } int64_t shiftQueue(int64_t x, int64_t y) { return x/y; }; float assignReactSfloat32(float f1, float f2) { float f3 = f1 * f2; f3 -= f2; return f3; }; volatile float fa1, fb2; volatile int64_t tt; int main(void) { tt = 345677LL; fa1 = 0.002f; fb2 = 34.567f; shiftQueue(tt, 45LL); fb2 = assignReactSfloat32((float)tt, fa1); tt = (int64_t)assignReactSfloat32(fb2, fa1); return 0; } Запускаю так arm-none-eabi-gcc -mcpu=cortex-m0 -mthumb -mfloat-abi=soft -DSTM32 -DSTM32F0 -DSTM32F072xB -DDEBUG -O0 -g3 -Wall -fmessage-length=0 -ffunction-sections -c app.c -o app.o arm-none-eabi-gcc app.o -mcpu=cortex-m0 -mthumb -mfloat-abi=soft -specs=nano.specs -Wl,--gc-sections -lm -o app.elf У меня вашего файла dio-022m.ld нет, поэтому запускаю без него. On 7/25/2022 at 1:48 PM, ev_zubkov said: Брал отсюда: https://developer.arm.com/downloads/-/gnu-rm Я так понимаю, что у вы под Линуксом работаете ? Может сборка под линукс с багами. Все нужные библиотечные функции в итоге включены в выходной файл app.lss app.map Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
repstosw 18 25 июля, 2022 Опубликовано 25 июля, 2022 · Жалоба On 7/25/2022 at 6:35 PM, ev_zubkov said: Линковщик почему-то не видит стандартную библиотеку и завершается с ошибками: Такое бывает, если либа собиралась другим тулчейном и несовместима с текущим. Или под другой таргет собиралась. Уже было такое 100 раз. Как вариант можно попробовать указать либу вместе с объектниками на этапе сборки. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ev_zubkov 0 26 июля, 2022 Опубликовано 26 июля, 2022 · Жалоба В 25.07.2022 в 18:07, dimka76 сказал: В вашей строке не хватает app.o Вы правы, собственно основная проблема была в этом. Была еще одна, связанная с syscalls.c, решилась с помощью гугла. Всем спасибо за помощь! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться