Перейти к содержанию
    

Как правильно передать компилятору скрипт линкера?

Мой первый опыт с MSP430. Перед написанием makefile я решил просто проверить/поиграться с платой MSP430 Launchpad (f5529).

В одной папке лежат следующие файлы:

- blink.c

- msp430f5529.ld

 

Я пытаюсь выполнить в этой папке в командной строке:

msp430-gcc -mmcu=msp430f5529 -Tmsp430f5529.ld -o blink.elf blink.c

 

В итоге получаю следующий вывод:

c:/program files (x86)/sublimetext/msp430-gcc/bin/../lib/gcc/msp430/4.6.3/../../../../msp430/bin/ld.exe: cannot find files: No such file or directory

c:/program files (x86)/sublimetext/msp430-gcc/bin/../lib/gcc/msp430/4.6.3/../../../../msp430/bin/ld.exe: cannot find (x86)/sublimetext/msp430-gcc/bin/../lib/gcc/../../msp430/lib/ldscripts/msp430f5529/: No such file or directory

collect2: ld returned 1 exit status

 

Как я понял, линкер пытается найти линкер скрипт у себя в папках компилятора и не принимает линкер скрипт который я ему передаю. Как это правильно сделать?

Изменено пользователем allsettingsdone

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это флаг линкера. Чтобы gcc передал его линкеру, попробуйте его указать через "-Wl," :

-Wl,-Tmsp430f5529.ld

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Это флаг линкера. Чтобы gcc передал его линкеру, попробуйте его указать через "-Wl," :

-Wl,-Tmsp430f5529.ld

То же самое:

msp430-gcc -mmcu=msp430f5529 -Wl,-Tmsp430f5529.ld -o blink.elf blink.c

c:/program files (x86)/sublimetext/msp430-gcc/bin/../lib/gcc/msp430/4.6.3/../../../../msp430/bin/ld.exe: cannot find files: No such file or directory

c:/program files (x86)/sublimetext/msp430-gcc/bin/../lib/gcc/msp430/4.6.3/../../../../msp430/bin/ld.exe: cannot find (x86)/sublimetext/msp430-gcc/bin/../lib/gcc/../../msp430/lib/ldscripts/msp430f5529/: No such file or directory

collect2: ld returned 1 exit status

 

А вот без запятой:

msp430-gcc -mmcu=msp430f5529 -Wl -Tmsp430f5529.ld -o blink.elf blink.c

cc1.exe: error: unrecognized command line option '-Wl'

Изменено пользователем allsettingsdone

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

cannot find (x86)/sublimetext/msp430-gcc/bin/../lib/gcc/../../msp430/lib/ldscripts/msp430f5529/: No such file or directory

А, у вас с путями нелады. Поставьте кавычки вокруг путей с пробелами. Хотя вам некуда. Тогда переставьте всё в путь без пробелов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А, у вас с путями нелады. Поставьте кавычки вокруг путей с пробелами. Хотя вам некуда. Тогда переставьте всё в путь без пробелов.

Я не пойму почему он лезет в по этому пути, ведь файл с линкер скриптом лежит рядом с makefile ((

 

А, у вас с путями нелады. Поставьте кавычки вокруг путей с пробелами. Хотя вам некуда. Тогда переставьте всё в путь без пробелов.

Сделал так как вы советовали, теперь в выводе линковщик ругается так:

 

msp430-gcc -mmcu=msp430f5529 -Tmsp430f5529.ld -o blink.elf blink.c

f:/soft/sublimetext/msp430-gcc/bin/../lib/gcc/msp430/4.6.3/../../../../msp430/bin/ld.exe: error: no memory region specified for loadable section `.noinit.crt0'

collect2: ld returned 1 exit status

 

Но в линкер скрипте, который я хочу подключить, нет такой секции ".noinit.crt0". Я взял стандартный линкер скрипт с сайта ti. (скрипт во вложении)

msp430f5529.zip

Изменено пользователем allsettingsdone

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Мне удалось нормально собрать проект с линкер файлом, но с использованием другого тулчейна (GCC с сайта ti).

В этом тулчейне экзешники названы по типу "msp-elf-gcc" или "msp-elf-as" и он весит около 520 МБ.

В то же время в другом тулчейне они называются "msp-gcc" или "msp-as" и он весит около 125 МБ.

 

Почему между ними такая разница и какой тулчейн следует использовать и где его лучше взять?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я не пойму почему он лезет в по этому пути, ведь файл с линкер скриптом лежит рядом с makefile ((

Он не скрипт не находит, а что-то своё. Видимо, где-то внутри не учтена возможность наличия пробелов в пути.

 

Сделал так как вы советовали, теперь в выводе линковщик ругается так:

 

msp430-gcc -mmcu=msp430f5529 -Tmsp430f5529.ld -o blink.elf blink.c

f:/soft/sublimetext/msp430-gcc/bin/../lib/gcc/msp430/4.6.3/../../../../msp430/bin/ld.exe: error: no memory region specified for loadable section `.noinit.crt0'

collect2: ld returned 1 exit status

 

Но в линкер скрипте, который я хочу подключить, нет такой секции ".noinit.crt0". Я взял стандартный линкер скрипт с сайта ti. (скрипт во вложении)

Потому и ругается. В crt0 есть такая секция, а складывать её некуда. Либо сделайте в своём скрипте такую секцию, либо не линкуйте стандартный стартовый код (придётся написать свой).

 

Почему между ними такая разница и какой тулчейн следует использовать и где его лучше взять?

Тут не подскажу, давно не работал с msp430.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Он не скрипт не находит, а что-то своё. Видимо, где-то внутри не учтена возможность наличия пробелов в пути.

 

 

Потому и ругается. В crt0 есть такая секция, а складывать её некуда. Либо сделайте в своём скрипте такую секцию, либо не линкуйте стандартный стартовый код (придётся написать свой).

 

 

Тут не подскажу, давно не работал с msp430.

 

Антоха, спасибо тебе за помощь.

Можно у тебя поинтересоваться, откуда у тебя такой богатый опыт во встраиваемых системах? Ты постоянно с этим работаешь на работе или это хобби?

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И работа, и хобби. На работе я чисто программист, а в качестве хобби делаю простенькие электронные устройства.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И работа, и хобби. На работе я чисто программист, а в качестве хобби делаю простенькие электронные устройства.

Понятно. Просто за последние пол года вы несколько раз мне очень помогли тут. И дело тут не в этом, я стараюсь всегда найти ответ сам и пишу тут только в крайних случаях. Но вы просто мой пример для подражания и кумир. Спасибо вам за всё.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...