Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Линковщик, настройка путей для библиотек
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
Troll
Доброго дня.

Пытаюсь скомпилировать и собрать проект в интерворк режиме.

В thumb режиме все компилится и собирается нормально, все библиотеки находятся. Командные строки компиляции:
Код
arm-elf-gcc -c -mcpu=arm7tdmi  -Wall -I./include -DAT91SAM7A3 -mthumb main.c -o main.o

и линкера:
Код
arm-elf-gcc -nostartfiles -Wl,--cref -T elf32-littlearm.lds -mthumb -lc -lgcc -L c/tools/Dev-Cpp/arm1/lib/gcc/arm-elf/4.2.0/thumb/../interwork/../../../../arm-elf/lib/thumb/../interwork/ -Ttext 0x100000 -Tdata 0x200000 -n -o _flash.elf cstartup.o lowlevel.o main.o syscalls.o debug.o timers.o param.o rwflash.o

Выписки из кросс таблицы (symbol, file):
Код
_PathLocale        /cygdrive/c/tools/Dev-Cpp/arm1/bin/../lib/gcc/arm-elf/4.2.0/../../../../arm-elf/lib/thumb/libc.a(lib_a-locale.o)
__adddf3        /cygdrive/c/tools/Dev-Cpp/arm1/bin/../lib/gcc/arm-elf/4.2.0/thumb/libgcc.a(_addsubdf3.o)


Когда добавляю ключ для компиляции в интерворк режиме при линковке возникают ошибки, насколько я понимаю линковщик не может найти файлы стандартных библиотек.

Командные строки компиляции (компилится без ошибок):
Код
arm-elf-gcc -c -mcpu=arm7tdmi  -Wall -I./include -DAT91SAM7A3 -mthumb -mthumb-interwork main.c -o main.o

и линкера(работа завершается с ошибкой):
Код
arm-elf-gcc -nostartfiles -Wl,--cref -T elf32-littlearm.lds -mthumb -mthumb-interwork -lc -lgcc -L c/tools/Dev-Cpp/arm1/lib/gcc/arm-elf/4.2.0/thumb/../interwork/../../../../arm-elf/lib/thumb/../interwork/ -Ttext 0x100000 -Tdata 0x200000 -n -o _flash.elf cstartup.o lowlevel.o main.o syscalls.o debug.o timers.o param.o rwflash.o

Выписки из кросс таблицы (symbol, file):
Код
/cygdrive/c/tools/Dev-Cpp/arm1/bin/../lib/gcc/arm-elf/4.2.0/../../../../arm-elf/bin/ld: internal error ../../binutils-2.17/ld/ldlang.c 4275
collect2: ld returned 1 exit status

Подскажите, что делаю не так. Почему линковщик лезет в левую папку "/arm-elf/bin/" и запускает "ld.exe"?

Заранее спасибо.

совсем забыл: arm-elf-gcc (GCC) 4.2.0
Сергей Борщ
Цитата(Troll @ Dec 13 2008, 11:42) *
Код
internal error ../../binutils-2.17/ld/ldlang.c 4275
Увы, это ошибка в линкере. Пишите баг-репорт, возьмите более свежую/старую версию или найдите и исправьте в исходниках binutils ошибку, которая приводит к вызову abort() в строке 4275 файла ldlang.c
Цитата(Troll @ Dec 13 2008, 11:42) *
Подскажите, что делаю не так. Почему линковщик лезет в левую папку "/arm-elf/bin/" и запускает "ld.exe"?
Скорее всего ошибка не у вас, а в самом линкере. А ld.exe - это собственно линкер и есть. Если посмотрите внимательно, это копия /bin/arm-elf-ld.exe, поскольку в виндовсе нет символических ссылок. В *nix один из этих файлов - символическая ссылка на второй. В папке /arm-elf/bin/ ищет нужные программы arm-elf-gcc. Почему это сделано именно так - можно найти в документации на gcc.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.