2015-05-25 3 views
0

Я читал тему о библиотеках Линукс http://www.yolinux.com/TUTORIALS/LibraryArchives-StaticAndDynamic.htmlПреимущество библиотек над объектных файлов

он упоминает:

«Преимущество заключается в том, что каждый объектный файл не должен быть указан при компоновке, так как разработчик может ссылаться на отдельную библиотеку «

Я не следую этому утверждению. Интересно, может ли кто-нибудь получить дополнительное объяснение или пример?

Благодаря

ответ

2

Это не самый лучший фразировка в мире, IIUC и немного вводит в заблуждение. ИМХО, вместо

Преимущество заключается в том, что каждый объектный файл не должен быть указан при компоновке, так как разработчик может ссылаться на библиотеку индивидуальный

он должен сказать

Преимущество состоит в том, что при связывании не обязательно указывать каждый объектный файл, потому что разработчик может ссылаться на всю библиотеку (как именованный объект)

В принципе, это означает следующее. При отсутствии библиотек, автор того, что сейчас библиотека, можно просто создать список объектных файлов, например:

a0.cpp -> a0.o 
a1.cpp -> a1.o 
... 

, а затем она может написать в документации «, если вы хотите функции х, у , и z ", то вам нужно связать с a3.o (потому что он содержит x и z), a42.o (для y), но также a23.o, a15.o и a72.o, поскольку они содержат необходимые лежащих в основе.

Это, конечно, громоздко. Благоразумный подход, как поясняет ваша ссылка, заключается в создании единой библиотеки из состояния общих функций и классов. Инструкции становятся «если вы хотите работать с foo aliens, связавшись с библиотекой foo_alien_shooting».

Смежные вопросы