arm-none-eabi-ld: не удается найти -lc

Я пытаюсь написать код для платы разработки на базе XMC1100. Я пробую этот учебник: http://eleceng.dit.ie/frank/arm/BareMetalXMC2Go/index.html

Я скачал файл blinky.tar.gz и разархивировал его. Когда я пытаюсь «сделать», я получаю эту ошибку: arm-none-eabi-ld: не могу найти -lc

Вот вывод "сделать"

arm-none-eabi-gcc -c -mcpu=cortex-m0 -mthumb -g init.c -o init.o
arm-none-eabi-gcc -c -mcpu=cortex-m0 -mthumb -g main.c -o main.o
arm-none-eabi-ld init.o main.o  -L /usr/lib/gcc/arm-none-eabi/4.8.2/armv6-m -T linker_script.ld -lc --cref -Map main.map -nostartfiles -o main.elf
arm-none-eabi-ld: cannot find -lc
make: *** [main.elf] Error 1

Я использую Linux Mint 17 Qiana.

Что мне не хватает?

Вот мой make-файл:

LIBSPEC=-L /usr/lib/gcc/arm-none-eabi/4.8.2/armv6-m

# Specify the compiler to use
CC=arm-none-eabi-gcc
# Specify the assembler to use
AS=arm-none-eabi-as
# Specity the linker to use
LD=arm-none-eabi-ld

CCFLAGS=-mcpu=cortex-m0 -mthumb -g

# List the object files involved in this project
OBJS=   init.o \
        main.o 

# The default 'target' (output) is main.elf and it depends on the object files being there.
# These object files are linked together to create main.elf
main.elf : $(OBJS)
    $(LD) $(OBJS) $(LIBSPEC) -T linker_script.ld -lc --cref -Map main.map -nostartfiles -o main.elf
    arm-none-eabi-objcopy -O binary main.elf main.bin
    objcopy -O ihex main.elf main.hex
    @echo "done"

# The object file main.o depends on main.c.  main.c is compiled to make main.o
main.o: main.c
    $(CC) -c $(CCFLAGS) main.c -o main.o


init.o: init.c
    $(CC) -c $(CCFLAGS) init.c -o init.o

# if someone types in 'make clean' then remove all object files and executables
# associated wit this project
clean: 
    rm $(OBJS) 
    rm main.elf
    rm main.bin 

person fobus    schedule 16.02.2015    source источник
comment
Я думаю, что ваш LIBSPEC неверен. Я просмотрел пример сценария с сайта, на который вы ссылаетесь, а также загрузил последнюю (4_9-2014q4) версию набора инструментов для Linux и Windows, и ваш LIBSPEC не соответствует структуре каталогов ни одного из этих источников. Как вы установили этот тулчейн?   -  person John O'M.    schedule 16.02.2015
comment
Привет, Джон, я установил с помощью apt-get. он загружается из официального репо. Я изменил LIBSPEC, потому что каталог в исходном файле не существует. У вас есть идея, как найти правильный путь для LIBSPEC?   -  person fobus    schedule 16.02.2015
comment
@fobus : это будет тот, который содержит libc.a, на что ссылается параметр -lc (-lXXX связывает библиотеку с именем libXXX.a).   -  person Clifford    schedule 16.02.2015
comment
@Clifford спасибо за ваш ответ, он мне очень помог. вот правильный каталог /usr/lib/arm-none-eabi/newlib/armv7-m Он скомпилирован прямо сейчас с этим каталогом.   -  person fobus    schedule 17.02.2015


Ответы (2)


Я столкнулся с той же проблемой, и sudo apt-get install libnewlib-arm-none-eabi мне помог.

person chaosink    schedule 13.04.2016
comment
Я знаю, что прошло много времени с тех пор, как был дан этот ответ, но чувак!!! Вы спасли мою жизнь!! Кстати, я столкнулся с той же проблемой, но пытался скомпилировать голый код i/MX6. - person m4l490n; 26.10.2016

Я получил следующее при попытке запустить сборку:

/usr/lib/gcc/arm-none-eabi/4.9.3/../../../arm-none-eabi/bin/ld: cannot find -lstdc++

Я установил пакеты в Ubuntu, используя sudo apt-get install gcc-arm-none-eabi libnewlib-arm-none-eabi make dfu-util, но, похоже, требуется еще один (по крайней мере, для моей системы). После установки libstdc++-arm-none-eabi-newlib удалось найти правильный файл.

Вот файлы, включенные в этот пакет в моей системе:

$ apt-file show libstdc++-arm-none-eabi-newlib | grep -e "stdc++.a$"
libstdc++-arm-none-eabi-newlib: /usr/lib/arm-none-eabi/newlib/armv6-m/libstdc++.a
libstdc++-arm-none-eabi-newlib: /usr/lib/arm-none-eabi/newlib/armv7-ar/thumb/fpu/libstdc++.a
libstdc++-arm-none-eabi-newlib: /usr/lib/arm-none-eabi/newlib/armv7-ar/thumb/libstdc++.a
libstdc++-arm-none-eabi-newlib: /usr/lib/arm-none-eabi/newlib/armv7-ar/thumb/softfp/libstdc++.a
libstdc++-arm-none-eabi-newlib: /usr/lib/arm-none-eabi/newlib/armv7-m/libstdc++.a
libstdc++-arm-none-eabi-newlib: /usr/lib/arm-none-eabi/newlib/armv7e-m/fpu/libstdc++.a
libstdc++-arm-none-eabi-newlib: /usr/lib/arm-none-eabi/newlib/armv7e-m/libstdc++.a
libstdc++-arm-none-eabi-newlib: /usr/lib/arm-none-eabi/newlib/armv7e-m/softfp/libstdc++.a
libstdc++-arm-none-eabi-newlib: /usr/lib/arm-none-eabi/newlib/fpu/libstdc++.a
libstdc++-arm-none-eabi-newlib: /usr/lib/arm-none-eabi/newlib/libstdc++.a
libstdc++-arm-none-eabi-newlib: /usr/lib/arm-none-eabi/newlib/mthumb/march=armv7/mfloat-abi=hard/mfpu=vfpv3-d16/mbig-endian/libstdc++.a
libstdc++-arm-none-eabi-newlib: /usr/lib/arm-none-eabi/newlib/thumb/libstdc++.a
person Greg Bray    schedule 19.07.2018