Bug 24608

Summary: avr-ld не может найти /usr/lib/avr/lib/avr5/crtm16.o
Product: Sisyphus Reporter: Denis Klimov <zver>
Component: avr-libcAssignee: Grigory Milev <week>
Status: CLOSED FIXED QA Contact: qa-sisyphus
Severity: normal    
Priority: P3 CC: viy, week
Version: unstable   
Hardware: all   
OS: Linux   

Description Denis Klimov 2010-11-21 22:43:46 MSK
Прошлая версия у меня нормально собирала вот такой проект 
http://www.captain.at/electronic-atmega16-serial-port.php

после обновления до 1.7.0 вываливается с такой диагностикой:

zver@magnum ~/avr/rs232 $ make
LIBRARY_PATH=":/usr/lib/avr/lib/avr5"
LD_LIBRARY_PATH=":/usr/lib/avr/lib/avr5"
LD_RUN_PATH=":/usr/lib/avr/lib/avr5"
export PATH
export LIBRARY_PATH
export LD_LIBRARY_PATH
export LD_RUN_PATH
avr-gcc -v -g -mmcu=atmega16 -Wall -Wstrict-prototypes -Os -mcall-prologues -I/usr/lib/avr/include/ -L/usr/lib/avr/lib/avr5 -o usart.out -Wl,-Map,usart.map usart.o
Reading specs from /usr/lib/gcc/avr/4.5.1/specs
COLLECT_GCC=avr-gcc
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/avr/4.5.1/lto-wrapper
Target: avr
Configured with: ../configure --target=avr --enable-languages=c,c++ --disable-nls --disable-libssp --enable-target-optspace --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-as=/usr/bin/avr-as --with-ld=/usr/bin/avr-ld --with-ar=/usr/bin/avr-ar --with-nm=/usr/bin/avr-nm --with-objcopy=/usr/bin/avr-objcopy
Thread model: single
gcc version 4.5.1 (GCC)
COMPILER_PATH=/usr/libexec/gcc/avr/4.5.1/:/usr/libexec/gcc/avr/4.5.1/:/usr/libexec/gcc/avr/:/usr/lib/gcc/avr/4.5.1/:/usr/lib/gcc/avr/
LIBRARY_PATH=/usr/lib/gcc/avr/4.5.1/avr5/:/usr/lib/gcc/avr/4.5.1/
COLLECT_GCC_OPTIONS='-v' '-g' '-mmcu=atmega16' '-Wall' '-Wstrict-prototypes' '-Os' '-mcall-prologues' '-I/usr/lib/avr/include/' '-L/usr/lib/avr/lib/avr5' '-o' 'usart.out'
 /usr/libexec/gcc/avr/4.5.1/collect2 -m avr5 -o usart.out crtm16.o -L/usr/lib/avr/lib/avr5 -L/usr/lib/gcc/avr/4.5.1/avr5 -L/usr/lib/gcc/avr/4.5.1 -Map usart.map usart.o -lgcc -lc -lgcc
/usr/bin/avr-ld: cannot find crtm16.o: No such file or directory
collect2: ld returned 1 exit status

пробовал перед вызовом avr-gcc определить LIBRARY_PATH, LD_LIBRARY_PATH, LD_RUN_PATH 

    LIBRARY_PATH="$(LIBRARY_PATH):/usr/lib/avr/lib/avr5"
    LD_LIBRARY_PATH="$(LD_LIBRARY_PATH):/usr/lib/avr/lib/avr5"
    LD_RUN_PATH="$(LD_RUN_PATH):/usr/lib/avr/lib/avr5"
    export PATH
    export LIBRARY_PATH
    export LD_LIBRARY_PATH
    export LD_RUN_PATH


но это не помогло, avr-gcc в дебаге все равно пишет что использует значение
LIBRARY_PATH=/usr/lib/gcc/avr/4.5.1/avr5/:/usr/lib/gcc/avr/4.5.1/

Вероятно надо пакетировать *.o файлы из  /usr/lib/avr/lib/avr5/ в одну из директорий что определена в LIBRARY_PATH, или сделать на них симлинки:
cd /usr/lib/gcc/avr/4.5.1/avr5; for f in `ls -1  /usr/lib/avr/lib/avr5/*.o`; do sudo ln -s $f $(basename $f); done
( а может бага в avr-gcc, который не понимает LIBRARY_PATH из переменной окружения ? )
Comment 1 Grigory Milev 2011-01-18 11:49:32 MSK
Пути исправлены.

avr-binutils-2.21-alt1
avr-gcc-4.5.1-alt2