Поскольку объектный файл (ET_REL, * .o) должен иметь разделы, а динамические библиотеки (ET_DYN, * .so) имеют как сегменты, так и разделы, могут ли файлы * so быть связаны статически, даже если они предназначены для динамической компоновки?Мог ли файл .so быть связанным с исполняемым файлом статически?
ответ
динамические библиотеки (ET_DYN, * .so) имеют оба сегмента и секции
Динамические библиотеки обычно имеют разделы, но только потому, что они не были лишены. Существует множество динамических библиотек, которые делают не имеют любые разделы (только для сегментов требуется для работы библиотеки).
может ли * файлы связываться статически, даже если он предназначен для динамической компоновки?
No. Большинство UNIX линкеры считают a.out
и foo.so
быть окончательные ссылка продукты, без предоставления каких-либо дальнейших изменений.
Включая foo.so
в a.out
теоретически возможно, но довольно сложно на практике.
Рассмотрим случай, когда foo.so
определяет и экспортирует функции foo
и bar
, и что foo
звонки bar
. Предположим, что можно было связать foo.so
с a.out
, у которого было другое определение bar
.
Что должно произойти в этом случае? Ошибка множественного определения? foo
позвонить bar
внутри foo.so
? foo
позвонить bar
внутри a.out
? Что-то другое? Все перечисленные выше альтернативы потребуют, чтобы линкер стал намного сложнее, чем сейчас, и уже достаточно сложно.
- 1. Статично связать .so с исполняемым файлом
- 2. Контрольная точка Torque BLCR со статическим связанным исполняемым файлом
- 3. C связать файл конфигурации с исполняемым файлом
- 4. GDB - переход к статически связанным libstdC++
- 5. создание .so также является исполняемым
- 6. Является ли `супер`, статически связанным в классах?
- 7. Можете ли вы просмотреть файл с компилированным/исполняемым файлом grunt.js?
- 8. Проблема с исполняемым файлом приложения
- 9. GCC Связывание общей библиотеки с исполняемым файлом
- 10. Может ли Winelib связывать DLL напрямую с исполняемым файлом ELF?
- 11. C++ в Linux, подтверждение кода из библиотеки не статически связано с результирующим исполняемым файлом
- 12. Перенаправление всего в файл, созданный исполняемым файлом?
- 13. проблемы с данными SQL могут быть вызваны плохим исполняемым файлом
- 14. Связывание живого идентификатора с загруженным исполняемым файлом
- 15. Как запустить c-программу с .so-файлом
- 16. Определить, является ли файл двоичным исполняемым файлом или файлом сценария с использованием gcc в Linux
- 17. Как взаимодействовать с исполняемым файлом в C++
- 18. linux .so производительность вырождается по сравнению с прямым скомпилированным исполняемым файлом
- 19. Является ли исполняемым файлом сборки C#?
- 20. Модуль Forever с исполняемым файлом узла приложения
- 21. Связать несколько файлов с исполняемым файлом
- 22. Загрузка файлов, связанных с исполняемым файлом
- 23. Каталоги Python конфликтуют с исполняемым файлом python
- 24. Как связать файл скомпилированного ресурса (.res) с исполняемым файлом
- 25. Как упаковать зависимость gtk # с исполняемым файлом
- 26. Попытка открыть адрес URL с исполняемым файлом
- 27. Сопряжение связи с исполняемым файлом в Cygwin
- 28. Использование Proguard с исполняемым JAR-файлом
- 29. Открытие Cygwin с файлом bat и исполняемым файлом Windows
- 30. Файл Cmake, связывающий динамическую библиотеку с исполняемым файлом