Я пытаюсь скомпилировать исполняемый файл, который также хочу использовать в качестве общей библиотеки. Когда я четко компилирую и свяжу его как «исполняемый» - все мелкие файлы могут запускаться и работать корректно. На этой фазе я не могу правильно связать с ней другие библиотеки (тонны переопределений в журнале). Когда я пытаюсь добавить опции -Fpic -shared - программа успешно копирует, но начинается с ошибки сегментации. Как я могу сделать его исполняемым и «sharedlibrary» одновременно?Исполняемый файл Linux как общая библиотека
ответ
Один файл не может быть совместно используемой библиотекой и исполняемым файлом одновременно. Но вы можете связать свои объектные файлы дважды, чтобы сделать оба. Он пошел бы что-то вроде этого:
g++ -c -o module.o module.cpp # create an object that has no main()
g++ -shared -fPIC -o libmodule.so module.o # build shared library
g++ -o program module.o main.cpp # build executable
Или вместо этого, последняя строка может связать общую библиотеку (в этом случае вам понадобится библиотека присутствующая при запуске исполняемого файла):
g++ -o program -l module main.cpp
Это неверно: на многих системах 'libc.so.6' является одновременно общей библиотекой и исполняемой программой. –
Технически правильно - лучший вид правильного! Но в любом случае 99,99% исполняемых файлов не являются общими объектами и наоборот. Скажем, вы «можете», но и вы «вероятно, не будете». Я также попытался выполнить мой libc на Mac OS X, и он не может. –
Этот ответ неверный (по крайней мере, на linux): см. Http://stackoverflow.com/a/1451482/50617 –
- 1. cppcms - Общая библиотека - Linux
- 2. Общая библиотека Linux
- 3. Linux Общая библиотека объектов Связь
- 4. Building Qt Общая библиотека на Linux
- 5. Общая библиотека на Linux и -fpic ошибки
- 6. Исполняемый файл не работает [Linux]
- 7. Автономная общая библиотека
- 8. Как вводить файлы в исполняемый файл linux?
- 9. Linux, как выполнить исполняемый/неисполняемый файл?
- 10. android.mk общая библиотека не найдена
- 11. Общая библиотека с другим именем
- 12. Профилирующая библиотека через исполняемый файл в кабине
- 13. Что такое «файл библиотеки»? т.е.: общая библиотека
- 14. общая библиотека под ubuntu
- 15. C - Общая библиотека - dlopen, dlsym
- 16. недоступна общая библиотека com.google.android.maps
- 17. Cmake Общая библиотека
- 18. Оберните исполняемый файл в другой исполняемый файл
- 19. Общая библиотека внутренняя
- 20. Общая библиотека выводит в stdout
- 21. Построить исполняемый файл Linux с помощью GCC
- 22. Создать исполняемый файл из tar.gz в Linux
- 23. a.out linux исполняемый файл является программой?
- 24. Запустить исполняемый файл в linux - не работает
- 25. Генерировать исполняемый файл Linux на QtCreator
- 26. PYTHONPATH Общая библиотека Выпуск
- 27. Linux - Как сжать набор файлов и исполняемый файл как уникальный исполняемый файл
- 28. Общая библиотека диспетчеризации сообщений?
- 29. Общая библиотека C++ в пользовательском каталоге не найдена
- 30. запустите файл сценария linux, исполняемый с .jar
Можете ли вы показать ошибки? Я скомпилировал библиотеки и исполняемые файлы под linux с включенной «shared library» и не имел проблем, которые вы описываете. Так что можно. – nrathaus
Один файл не может быть исполняемым и разделяемой библиотекой. –
Почему вы хотите это сделать? Единственный пример - '/ lib/libc.so.6' ... –