реклама на сайте
подробности

 
 
> Ошибка линкера
ZAA
сообщение Apr 14 2008, 07:59
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 141
Регистрация: 10-02-08
Из: Екб
Пользователь №: 34 906



При линковке возникла следующая ошибка (причём и раньше сатлкивалась с ней ,но так и не выяснила ,что она значит):
Linking: main.elf
arm-elf-gcc -mcpu=arm7tdmi -I. -g -DROM_RUN -DVECTORS_IN_ROM -D__WinARM__ -D__WINARMSUBMDL_AT91SAM7S256__ -O0 -ffunction-sections -fdata-sections -Wall -Wpointer-arith -Wswitch -Wredundant-decls -Wreturn-type -Wshadow -Wunused -Wa,-adhlns=common/Cstartup.lst -I./common -I../../inc -I../../conf -MD -MP -MF .dep/main.elf.d common/Cstartup.o common/swi_handler.o common/Cstartup_SAM7.o main.o dbgu.o syscalls.o swi_handler_user.o systime.o --output main.elf -nostartfiles -Wl,-Map=main.map,--cref,--gc-sections -L./common -L../../ -lefsl -T./common/AT91SAM7S256-ROM.ld
/src/gnutools/arm-elf/bin/../lib/gcc-lib/arm-elf/3.2.1/../../../../arm-elf/bin/ld: cannot find -lg
collect2: ld returned 1 exit status
make: *** [main.elf] Ошибка 1

Может ,линкер не находит какую-то опцию??? ПОдскажите ,плз!!! Очень надо! help.gif
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
amw
сообщение Apr 14 2008, 13:55
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 601
Регистрация: 22-09-05
Из: Kharkov
Пользователь №: 8 847



Цитата(ZAA @ Apr 14 2008, 10:59) *
При линковке возникла следующая ошибка (причём и раньше сатлкивалась с ней ,но так и не выяснила ,что она значит):
Linking: main.elf
arm-elf-gcc -mcpu=arm7tdmi -I. -g -DROM_RUN -DVECTORS_IN_ROM -D__WinARM__ -D__WINARMSUBMDL_AT91SAM7S256__ -O0 -ffunction-sections -fdata-sections -Wall -Wpointer-arith -Wswitch -Wredundant-decls -Wreturn-type -Wshadow -Wunused -Wa,-adhlns=common/Cstartup.lst -I./common -I../../inc -I../../conf -MD -MP -MF .dep/main.elf.d common/Cstartup.o common/swi_handler.o common/Cstartup_SAM7.o main.o dbgu.o syscalls.o swi_handler_user.o systime.o --output main.elf -nostartfiles -Wl,-Map=main.map,--cref,--gc-sections -L./common -L../../ -lefsl -T./common/AT91SAM7S256-ROM.ld
/src/gnutools/arm-elf/bin/../lib/gcc-lib/arm-elf/3.2.1/../../../../arm-elf/bin/ld: cannot find -lg
collect2: ld returned 1 exit status
make: *** [main.elf] Ошибка 1

Может ,линкер не находит какую-то опцию??? ПОдскажите ,плз!!! Очень надо! help.gif

Линкер не находит библиотеку libg.a
Эта библиотека то же самое что и libc.a но с отладочной информацией.

Цитата(Сергей Борщ @ Apr 14 2008, 13:24) *
А мне кажется, что автор хочет подключить библиотеку libg.a, но ключ -l указывает не линкеру (ld), а gcc.

gcc без ключа -c выполняет линковку путем запуска ld.
Но для встраиваемых приложений (типа arm-elf-gcc) лучше использовать arm-elf-ld явно.
То есть разделить компиляцию и линковку, и выполнять компиляцию с ключем -c а потом уже линковать все полученные *.o файлы путем вызова arm-elf-ld


--------------------
- А мораль отсюда такова: всякому овощу свое время. Или, хочешь, я это сформулирую попроще: никогда не думай, что ты иная, чем могла бы быть иначе, чем будучи иной в тех случаях, когда иначе нельзя не быть.
© Lewis Carroll. Alice's adventures in wonderland.
Go to the top of the page
 
+Quote Post
axle
сообщение Apr 17 2008, 08:26
Сообщение #3


Частый гость
**

Группа: Новичок
Сообщений: 81
Регистрация: 19-04-07
Пользователь №: 27 167



Цитата(amw @ Apr 14 2008, 20:55) *
Но для встраиваемых приложений (типа arm-elf-gcc) лучше использовать arm-elf-ld явно.
То есть разделить компиляцию и линковку, и выполнять компиляцию с ключем -c а потом уже линковать все полученные *.o файлы путем вызова arm-elf-ld

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

А будет ли ld автоматически работать с multilib? Ведь когда используешь gcc нужная библиотека выбирается автоматически в зависимости от параметров (например -mthumb).

Еще я когда-то давно натыкался в инете на обсуждение какой-то проблемы линковки и рекомендация была использовать для линковки gcc. Мол в ld баг и gcc об этом знает и обходит его. Вообще похоже на бред, но почему бы так не делать? Чем ld лучше?
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 05:09
Рейтинг@Mail.ru


Страница сгенерированна за 0.0199 секунд с 7
ELECTRONIX ©2004-2016