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

sdcc 3.0

Всем привет!

Если у кого есть более-менее серьезные работы, точеные под sdcc для пиков, отпишитесь плз - мнение, что стало лучше.

Сам пристально и давно слежу за ними, по делать вещи из-под сабжа стремновато, боюсь, не хватит оптимизатора. Но, может быть это время придет скоро? А то некрочип С18 порядком забадал.

Спасибо.

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


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

Начал проект с нуля на SDCC пока нормально, НО есть и вопросы. Не заработал printf()

#include <pic18fregs.h>
#include  <stdio.h>
#include <usart.h>

void main(void)
{
    usart_open(
           USART_TX_INT_OFF
        & USART_RX_INT_OFF
        & USART_BRGH_HIGH
        & USART_ASYNCH_MODE
        & USART_EIGHT_BIT,
           79
        );

    stdout = STREAM_USART;     // Direct outout to the USART

    printf("Hello World\n");
}

исходник

выдает

.....
missing definition for symbol "_stdout", required by "test.o" 
missing definition for symbol "_printf", required by "test.o" 
.....
*** Exited with status: 1 ***

 

 

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


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

    usart_open(
           USART_TX_INT_OFF
        & USART_RX_INT_OFF
        & USART_BRGH_HIGH
        & USART_ASYNCH_MODE
        & USART_EIGHT_BIT,
           79
        );

Безотносительно к sdcc. Здесь наверное надо применять не "&", а "|" ?

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


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

Безотносительно к sdcc. Здесь наверное надо применять не "&", а "|" ?

 

Даже если и так, код не компилируеццо... не находит он printf()

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


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

Я с sdcc имел дело несколько лет назад, и работал только с 8051. Но всё же. Как вы линкуете? Какая командная строка для линкера?

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


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

Если код не компилируется - не хватает #include <какой-то файл>, где объявлена функция printf (stdio.h или stdlib.h). Если не линкуется - не подключена необходимая библиотека.

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


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

И так. Скрины:

post-23502-1293056535_thumb.png

post-23502-1293056549_thumb.png

 

Опции - все на автомате:

Compiler:: -m%FAMILY -%DEVICE -V --debug -I$(SRCPATH) -c %I

Linker:: -m%FAMILY -%DEVICE -V --debug -Wl-c -Wl-m $LKR(-Wl-s%LKR) -I$(SRCPATH) -o%O %OBJS %LIBS

Librarian:: -c %O %OBJS %LIBS

-------------

Как PikLab-у "найти" библиотеки и ассемблер?

Добавить в Librarian-Custom Options:: -L "/usr/share/sddc/lib/pic16"

?? или я что-то путаю?

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

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


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

У-у-у. Похоже, что я вам не помощник:( Я даже не догадываюсь, что это за скрины.

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


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

У-у-у. Похоже, что я вам не помощник:( Я даже не догадываюсь, что это за скрины.

 

это скрины IDE PikLab

 

ну Вы мне просто со скриптами линкера подскажите, если можно. От оболочки то особо полет не нарушится.

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


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

Как PikLab-у "найти" библиотеки и ассемблер?

Добавить в Librarian-Custom Options:: -L "/usr/share/sddc/lib/pic16"

?? или я что-то путаю?

Путаете. С PikLab не работал, но строка -L "путь" означает добавление линкеру пути поиска библиотек. А ассемблер вызывается из makefile. Прописан ли у вас путь к ассемблеру и библиотекарю в PATH? Находятся ли gplib, gpasm при запуске из командной строки?

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


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

А gputils у Вас стоЯт ваще-то?

 

да, gputils есть и в опшинсах ихних все находится

 

Путаете. С PikLab не работал, но строка -L "путь" означает добавление линкеру пути поиска библиотек. А ассемблер вызывается из makefile. Прописан ли у вас путь к ассемблеру и библиотекарю в PATH? Находятся ли gplib, gpasm при запуске из командной строки?

 

gplib gpasm c командной строки находятся.

А вот что с опциями:

Компилятор

post-23502-1293079747_thumb.png

Линкер

post-23502-1293079790_thumb.png

-m%FAMILY -%DEVICE -V --debug -Wl-c -Wl-m $LKR(-Wl-s%LKR) -I$(SRCPATH) -o%O %OBJS %LIBS

и либы

post-23502-1293079798_thumb.png

 

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


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

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

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

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

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

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

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

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

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

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