Компиляция библиотек. Копи пастим....

MacSim
Offline
Зарегистрирован: 28.11.2012

.... копипастим думая.

При присоедениении к своему файлу библиотеки дерективой #include *.h происходит простой копипаст кода библиотеки или компилятор подходит к этому вопросу избирательно, т.е. вставляет только часть кода библиотеки, только используемые в файле функции. т.е. не всегда рационально из-за одной функции подключать библиотеку. (о диджиталврайт я молчу, не знаю кто это придумал. Так скоро дойдем до #includ готовая программа.h  ....void main() {написать программу();} )

Стоит ли использовать чужие библиотеки? Это наверное каждому самому решать от конкретных задач.

Те кто пишет библиотеки не ленитесь делать файл выделенных слов(подсвеченных).

А еще редко где встречается описание функций библиотеки. Чтоб в отдельном файле редми описывались функции, синтаксис, пример использования. Приходится ехемпл ковырять, а посмотришь сср там еще есть неописанные. (А иногда и по рукам бы надавал, несмотря на свой "чайниковый" опыт програмирования)

зы у меня пример от адафрута сожрал всю память at328p

 

NeiroN
NeiroN аватар
Offline
Зарегистрирован: 15.06.2013

Вообще этот вопрос решается во время линковки.

Адафрут он не расчитан на 328. Там надо 2560 или DUE. Вообще дисплейные модули это вам не видеокарта - он умеет только держать в буфере 1 кадр.

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

А тема о чем?
Это вопросы или утверждения?
Читается как поток мыслей.
Если не нравится одна библиотека, ищешь другую. Если все не походят, пишешь сам. Если сам не можешь, идёшь в раздел заказов, может кто напишет.

MacSim
Offline
Зарегистрирован: 28.11.2012

kisoft пишет:
А тема о чем? Это вопросы или утверждения? Читается как поток мыслей. Если не нравится одна библиотека, ищешь другую. Если все не походят, пишешь сам. Если сам не можешь, идёшь в раздел заказов, может кто напишет.

Если относиться к форуму, как к ФОРУМУ, то и читается верно. Да поток мыслей, все в формате "Форума". Конечно многие привыкли из каждой темы делать "судебное заседание", устраивать дебаты переходящие в склокку...

Да использовал другой формат, не формат вопрос-ответа.

 

MacSim
Offline
Зарегистрирован: 28.11.2012

NeiroN пишет:

Вообще этот вопрос решается во время линковки.

Спасибо за ссылку, позновательно. Немного разогнал туман в голове, но есть ворос:

В библиотеке 2 файла *.h и *.ccp из статьи следует, что первый включается в тело нашего файла копипастом полностью. Не совсем понятно что происходит на этапе линковки с *.сср. Поправьте если не прав:

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

 

NeiroN пишет:

Адафрут он не расчитан на 328. Там надо 2560 или DUE. Вообще дисплейные модули это вам не видеокарта - он умеет только держать в буфере 1 кадр.

Не расчитан кем? 2560 по всем параметрам схожа с 328, кроме размера памяти. Не расчитан если в слепую копи-пастить, о чем я и говорю. Можно "подрезать" библиотеку, оставив только нужное. Будет экономия памяти. И все хорошо входит и работает. Не видеокарта, не спорю.

 

 

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

MacSim пишет:
Не совсем понятно что происходит на этапе линковки с *.сср. 

Если Вы имели в виду *.cpp, то ничего не происходит -  в линковке он никакого участия не принимает.

MacSim пишет:
по всем параметрам схожа с 328, кроме размера памяти.

Так ото ж!

MacSim пишет:
Можно "подрезать" библиотеку, оставив только нужное. Будет экономия памяти. И все хорошо входит и работает. 

Если пользовать с умом, то и резать не надо - само отбросится при линковке. Только вот буфер размером в половину памяти 328'ой никуда не денешь. Чтобы его отбросить, надо выбросить всю библиотеку (ну, или переписать её до неузнаваемости).

 

MacSim
Offline
Зарегистрирован: 28.11.2012

ЕвгенийП пишет:

Если Вы имели в виду *.cpp, то ничего не происходит -  в линковке он никакого участия не принимает.

В нем содержаться тела всех функций(я их функциями не верно называю, видимо). Производит ли компилятор отсев тех функций которые не используются в программе? Помоему нет. Происходит вставка всех.

 

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

MacSim пишет:

В нем содержаться тела всех функций(я их функциями не верно называю, видимо). Производит ли компилятор отсев тех функций которые не используются в программе? Помоему нет. Происходит вставка всех.

Компилятор не может их отсеивать, даже если бы и захотел, т.к. компилятор всегда работает с одним файлом, а функция может вызываться из другого. Компилятор честно их все компилирует и складывает в объектный файл. На этом его работа заканчивается. Линкер же (или компоновщик) как раз расставляет реальные адреса и он может точно знать, что какая-то функция ни разу не была использована, т.к. её адрес никуда не подставлен. Он её и выбросит (если у него такая опция установлена, конечно). Это немного упрощённо, но в целом примерно так.

kisoft
kisoft аватар
Offline
Зарегистрирован: 13.11.2012

MacSim пишет:

kisoft пишет:
А тема о чем? Это вопросы или утверждения? Читается как поток мыслей. Если не нравится одна библиотека, ищешь другую. Если все не походят, пишешь сам. Если сам не можешь, идёшь в раздел заказов, может кто напишет.

Если относиться к форуму, как к ФОРУМУ, то и читается верно. Да поток мыслей, все в формате "Форума". Конечно многие привыкли из каждой темы делать "судебное заседание", устраивать дебаты переходящие в склокку...

Да использовал другой формат, не формат вопрос-ответа.

 

Вы считаете, что я Вам нахамил или потроллить решил? О, ну тогда, извините, у меня нет столько времени заниматься ерундой (троллить или хамить).