В чем разница между файлом .o и файлом .lib?В чем разница между файлом .o и файлом .lib?
ответ
.LIB файл представляет собой набор .OBJ файлов сцепленных вместе с индексом. Не должно быть разницы в том, как лечит линкер.
Цитируется здесь:
What is the difference between .LIB and .OBJ files? (Visual Studio C++)
Они на самом деле очень разные, особенно со старыми линкерами.
Файлы .o (или .obj) являются объектными файлами, они содержат выходные данные генерируемого компилятором кода. Он все еще находится в промежуточном формате, например, большинство ссылок все еще не разрешено. Обычно между исходным файлом и объектным файлом имеется сопоставление «один к одному».
Файлы .a (или .lib) являются архивами, также известными как библиотека, и представляют собой набор объектных файлов.
Все операционные системы имеют инструменты, которые позволяют добавлять/удалять/перечислять файлы объектов в файлы библиотек.
Другое отличие, особенно со старыми линкерами, заключается в том, как обрабатываются файлы при их соединении. Некоторые связанные будут помещать полный объектный файл в окончательный двоичный файл, независимо от того, что на самом деле используется, в то время как они будут извлекать полезную информацию из файлов библиотеки.
В настоящее время большинство компоновщиков достаточно умны, чтобы удалить все, что не используется.
Последнее предложение во многом ложно. – 2010-12-09 14:41:40
Понятно, что блок компиляции (блок кода в исходном файле/объектном файле) полностью или полностью связан. В то время как некоторые версии, со значительными уровнями сотрудничества между компилятором и компоновщиком, могут удалять неиспользуемый код из объектных файлов во время ссылки, это не меняет проблему, которая включает в себя 2 единицы компиляции с конфликтующими именами символов в программе. ошибка.
В качестве практического примера предположим, что ваша библиотека имеет две функции: foo
и bar
, и они находятся в объектном файле вместе. Если я хочу использовать bar
, но моя программа уже имеет внешний символ с именем foo
, я застрял с ошибкой. Даже если и как реализация может решить эту проблему для меня, код по-прежнему неверен.
С другой стороны, если у меня есть файл библиотеки, содержащий два отдельных объектных файлов, один с foo
и другие с bar
, только один, содержащий bar
будут втянуты в мою программу.
При написании библиотек вы должны избегать включения нескольких функций в один и тот же объектный файл, если только они не используются вместе. Это приведет к раздуванию приложений, которые связывают вашу библиотеку (статически) и увеличивают вероятность конфликтов символов. Лично я предпочитаю заблуждаться на стороне отдельных файлов, если есть сомнения - даже полезно помещать foo_create
и foo_free
в отдельные файлы, если последнее нетривиально, так что короткие одноразовые программы, которые не нужно вызывать foo_free
, могут не вытягивать код для глубокого освобождения (и, возможно, даже не втягивать в реализацию free
).
- 1. Разница между .o и .ko файлом
- 2. В чем разница между файлом app.config и файлом XYZ.settings?
- 3. В чем разница между .cpp-файлом и файлом .h?
- 4. В чем разница между файлом .py и файлом .ipy?
- 5. В чем разница между файлом и файлом произвольного доступа?
- 6. В чем разница между файлом ico и файлом значка png
- 7. В чем разница между потоком и файлом?
- 8. Разница между файлом .msg и .eml-файлом
- 9. В чем разница между объектным файлом .o и файлом библиотеки .so?
- 10. В чем разница между файлом сборки, объектным файлом и двоичным файлом?
- 11. Разница между файлом .ystystore и файлом .jks
- 12. Разница между конфигурационным файлом и файлом сценария?
- 13. Разница между Blob и файлом
- 14. Разница между файлом и документом
- 15. В чем разница между файлом: /, file: //, file: ///
- 16. В чем разница между файлом .Kdb, файлом .jks и файлом CMS?
- 17. В чем разница между компоновщиком и make-файлом?
- 18. В чем разница между io_submit и файлом с O_ASYNC
- 19. Разница между файлом и DocumentFile в Java
- 20. В чем разница между проектом и файлом в Java?
- 21. В чем разница между папкой «drawable» и файлом «drawable.xml»?
- 22. В чем разница между файлом `export signed` и` unsigned` .apk?
- 23. В чем разница между файлом MDB и SDF?
- 24. В чем разница между файлом aar и war?
- 25. В чем разница между узловым модулем и обычным файлом javascript
- 26. В чем разница между XIB и файлом NIB?
- 27. В чем разница между .h (заголовочный файл) и .cpp-файлом?
- 28. В чем разница между отслеживаемым и поэтапным файлом?
- 29. В чем разница между .bin и .dat файлом?
- 30. В чем разница между файлом `eml` и электронным сообщением RFC822?
с точки зрения чего? формат файла? Применение? источник? – tenfour 2010-12-09 14:27:20