Jump to content

    
ViKo

Keil, Create Library

Recommended Posts

1 минуту назад, Forger сказал:

чтобы не гадать делайте все одинаковые с проектом

Я-то как раз хотел в v6 скомпилировать, да на C++11. А они нехай к тому, чем пользуются, пришпилят. Может не склеиться?

Share this post


Link to post
Share on other sites
5 minutes ago, ViKo said:

 Может не склеиться?

Проверить самому - 5 минут с перекурами :)

 

Знаю точно, что v5 и v6 несовместимы, хотя либы в составке keil как-то работают под обеими версиями (я про либы из middleware).

Share this post


Link to post
Share on other sites
1 минуту назад, Forger сказал:

Проверить самому - 5 минут с перекурами :)

Спросить - еще быстрее.
Удивляюсь, когда посылают в Гугл за ответами. Здесь и есть форум вопросов и ответов. Специальный! :hi:

Share this post


Link to post
Share on other sites
4 minutes ago, ViKo said:

Спросить - еще быстрее.
Удивляюсь, когда посылают в Гугл за ответами.

Ничего удивительного, если в гугле все это есть, на первой же странице. Кроме нюансов, но они возникают в процессе применения и также решаются через гугль.

Не вижу смысл дергать сообщество по тому, что можно сделать самостоятельно ;)

 

 

Share this post


Link to post
Share on other sites

При составлении библиотеки - каждая функция в отдельном файле С (С++).  Если в одном исходнике описано несколько функций описано, то цепляться будет все равно весь объектный файл в проект, хотя нужна может быть только одна функция. Скорее всего и с кейлом так, но можно проверить.

Share this post


Link to post
Share on other sites
13 minutes ago, mdmitry said:

Скорее всего и с кейлом так, но можно проверить.

 

В keil еще с античных времен можно было поставить одну единственную галочку, что позволяет избежать подобного геморроя. Работает в ОБОИХ компляторах v5 и разумеется в v6

Вот картинка, по названию опции очень хорошо понятно, что она делает:

 

Безымянный.jpg

 

Это НУЖНО ДЕЛАТЬ не только библиотеках, но в самих проектах, очень сокращает объем прошивки,

особенно в проектах, где используются огромные c/c++ файлы с кучей функций/методов

Share this post


Link to post
Share on other sites

Прекрасно, что в кейле так просто, но с ним никогда не имел дел. У меня крепко в голове эта необходимость засела ещё с давних времён, когда работал с intel196. Разделение на файлы упрощает портируемость (если есть необходимость функция->файл).

Share this post


Link to post
Share on other sites
3 hours ago, mdmitry said:

У меня крепко в голове эта необходимость засела ещё с давних времён, когда работал с intel196. Разделение на файлы упрощает портируемость (если есть необходимость функция->файл).

Раньше передвигались исключительно на лошадях и при появлении паровозов особо суеверные люто их боялись ...

Share this post


Link to post
Share on other sites
53 minutes ago, Forger said:

Раньше передвигались исключительно на лошадях и при появлении паровозов особо суеверные люто их боялись ...

Это к чему?

Вы гарантируете, что все компиляторы-линкеры-библиотекари поддерживают режим разделения на секции одного объектного файла?

Для gcc есть ключи при создании объектных файлов для разделения на секции, и не забыть ключи линкеру дать для исключения неиспользуемых секций. Про другие средства не знаю.

Share this post


Link to post
Share on other sites
7 часов назад, mdmitry сказал:

При составлении библиотеки - каждая функция в отдельном файле С (С++).

Для С++ это значит, что при написании библиотечного класса количество .срр файлов будет равно количеству методов в классе, исключая встраиваемые?

Share this post


Link to post
Share on other sites
1 hour ago, mdmitry said:

Вы гарантируете, что все компиляторы-линкеры-библиотекари поддерживают режим разделения на секции одного объектного файла?

Я гарантирую то, что не стану заставлять вас пересаживаться на "паровоз", смело катайтесь и дальше на конной тяге :sarcastic:

 

1 hour ago, mdmitry said:

Для gcc есть ключи при создании объектных файлов для разделения на секции, и не забыть ключи линкеру дать для исключения неиспользуемых секций. Про другие средства не знаю.

В любой адекватной (не античной) среде эти ключи выставляются или по-умолчанию автоматом или соотв. "галочками". В допотопных же IDE или из под makefile это все придется выставлять ручками :pardon:

Share this post


Link to post
Share on other sites
2 hours ago, Forger said:

Я гарантирую то, что не стану заставлять вас пересаживаться на "паровоз", смело катайтесь и дальше на конной тяге :sarcastic:

В любой адекватной (не античной) среде эти ключи выставляются или по-умолчанию автоматом или соотв. "галочками". В допотопных же IDE или из под makefile это все придется выставлять ручками :pardon:

Не думал, что для вас gcc (Debian 6.3.0-18+deb9u1) 6.3.0 и gcc-arm-none-eabi-9-2020-q2-update конная тяга :pardon:

Предпочитаю make из-за портируемости :yes:

Quote

Для С++ это значит, что при написании библиотечного класса количество .срр файлов будет равно количеству методов в классе, исключая встраиваемые?

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

 

Share this post


Link to post
Share on other sites
11 hours ago, mdmitry said:

Разделение на файлы упрощает портируемость

Гм... или усложняет. В среднем классе у меня 5 - 15 методов. В директории обычно находится от одного до 3 - 5 классов, схожих по назначению. Например, это классы для расчёта каких-либо физических величин. Итого, в наихудшем случае выходит 15 * 5 = 75 файлов с расширением *.cpp. А сколько подобных директорий в проекте?

Share this post


Link to post
Share on other sites

Я предпочитаю C++, если после него получится библиотека, которую можно включить в проект на любом языке. Это возможно? 

Экономить на функциях мне в данном случае не обязательно. Их немного, использоваться будут в одинаковой степени. 

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.