Название: Динамические библиотеки Linux Отправлено: CJ1 от Июнь 04, 2013, 10:00 Всем привет, проблема такая.
Стоит VirtualBox, на ней Linux ubuntu, создаю общую папку rems-loco, монтирую ее в /mnt/gui/gui. Там создаю проект на винде, на линукси компилю. Все вроде работает, НО Хочу создать динамическую библиотеку QIOMCDevice. Собственно создаю папку /mnt/gui/gui/QIOMCDevice. Там создаю динамическую библиотеку, и на стадии make создается только libQIOMCDevice.so.1.0.0 Что с ним дальше делать? Как подключить? в .pro файле проекта пишу LIBS += \ libQIOMCDevice.so он ее не находит! Как быть? Название: Re: Динамические библиотеки Linux Отправлено: m_ax от Июнь 04, 2013, 10:06 Всем привет, проблема такая. Стоит VirtualBox, на ней Linux ubuntu, создаю общую папку rems-loco, монтирую ее в /mnt/gui/gui. Там создаю проект на винде, на линукси компилю. Все вроде работает, НО Хочу создать динамическую библиотеку QIOMCDevice. Собственно создаю папку /mnt/gui/gui/QIOMCDevice. Там создаю динамическую библиотеку, и на стадии make создается только libQIOMCDevice.so.1.0.0 Что с ним дальше делать? Как подключить? в .pro файле проекта пишу LIBS += \ libQIOMCDevice.so он ее не находит! Как быть? LIBS += -L$$LIB_PATH -lQIOMCDevice Название: Re: Динамические библиотеки Linux Отправлено: CJ1 от Июнь 04, 2013, 10:09 неработает!!!
Но я понял! Мне нужна недистрибутивно скомпилировать библиотеку!! Только как это сделать? Название: Re: Динамические библиотеки Linux Отправлено: m_ax от Июнь 04, 2013, 10:13 неработает!!! Не работает - пишется раздельно)Но я понял! Мне нужна недистрибутивно скомпилировать библиотеку!! Только как это сделать? LIB_PATH - инициирована? Название: Re: Динамические библиотеки Linux Отправлено: CJ1 от Июнь 04, 2013, 10:13 Вот мой .pro файл!
Цитировать #------------------------------------------------- # # Project created by QtCreator 2013-06-04T11:49:47 # #------------------------------------------------- QT -= gui TARGET = QIOMCDevice TEMPLATE = lib DEFINES += QIOMCDEVICE_LIBRARY SOURCES += qiomcdevice.cpp HEADERS += qiomcdevice.h\ qiomcdevice_global.h unix:!symbian { maemo5 { target.path = /opt/usr/lib } else { target.path = /usr/lib } INSTALLS += target } Как мне сделать что бы в итоге появлялся только .so Название: Re: Динамические библиотеки Linux Отправлено: mutineer от Июнь 04, 2013, 10:13 Цитировать нужна недистрибутивно скомпилировать библиотеку что это значит?И окромя "неработает" хотелось бы увидеть конкретную ошибку Название: Re: Динамические библиотеки Linux Отправлено: mutineer от Июнь 04, 2013, 10:15 Как мне сделать что бы в итоге появлялся только .so Тебе нужно создать символические ссылки libQIOMCDevice.so.1.0, libQIOMCDevice.so.1, libQIOMCDevice.so, которые будут указывать на libQIOMCDevice.so.1.0.0. Странно что они сами не создались во время сборки Название: Re: Динамические библиотеки Linux Отправлено: CJ1 от Июнь 04, 2013, 10:16 объясняю! В линуксе, выдумана какаето фигня с версиями so.1 so.2.0.0 и так далее. мне этот бред не нужен!
Мне нужно чтобы появился .so файл я его копернул в каталог с программой и все работало! Как это сделать? Название: Re: Динамические библиотеки Linux Отправлено: CJ1 от Июнь 04, 2013, 10:17 Цитировать Странно что они сами не создались во время сборки ничего странного! команда ln во время сборки говорит что не может работать с файловой системой VirtualBox!Название: Re: Динамические библиотеки Linux Отправлено: mutineer от Июнь 04, 2013, 10:19 Цитировать Странно что они сами не создались во время сборки ничего странного! команда ln во время сборки говорит что не может работать с файловой системой VirtualBox!Переименуй файл тогда, раз у тебя файловая система без ссылок Название: Re: Динамические библиотеки Linux Отправлено: CJ1 от Июнь 04, 2013, 10:19 ln failed to create symbolic link `libQIOMDevice` : Read-only file system
Название: Re: Динамические библиотеки Linux Отправлено: CJ1 от Июнь 04, 2013, 10:20 Цитировать Переименуй файл тогда, раз у тебя файловая система без ссылок пробовал переименовать в libQIOMCDevice.soТогда при запуске программа говорит ей нужен libQIOMCDevice.so.1 Название: Re: Динамические библиотеки Linux Отправлено: mutineer от Июнь 04, 2013, 10:22 Цитировать Переименуй файл тогда, раз у тебя файловая система без ссылок пробовал переименовать в libQIOMCDevice.soТогда при запуске программа говорит ей нужен libQIOMCDevice.so.1 Вот поэтому в линуксе и есть эта чехарда с символическими ссылками на либы - приложение при линковке хочет .so, а при запуске .so.*. Попробуй так: LIBS += -l:libQIOMCDevice.so Название: Re: Динамические библиотеки Linux Отправлено: CJ1 от Июнь 04, 2013, 10:24 Всеравно просит .so1
Название: Re: Динамические библиотеки Linux Отправлено: mutineer от Июнь 04, 2013, 10:25 Ну тогда я вижу только два варианта - сделать ссылки, либо не линковаться, а грузить в рантайме
Название: Re: Динамические библиотеки Linux Отправлено: CJ1 от Июнь 04, 2013, 10:25 ВОт! Тут пишется про недистрибутивную компиляцию
http://habrahabr.ru/post/122757/ Название: Re: Динамические библиотеки Linux Отправлено: CJ1 от Июнь 04, 2013, 10:26 Дистрибутивная компиляция от недистрибутивной отличается тем, что в дистрибутивном случае динамические библиотеки ищутся в /usr/lib и имеют вид lib$(NAME).so.$(VERSION), в случае недистрибутивной компиляции они называются lib$(NAME).so, а ищутся в каталоге запуска программы.
Название: Re: Динамические библиотеки Linux Отправлено: CJ1 от Июнь 04, 2013, 10:34 Ну помогите! Я уже замучался
Как вобще переносить проекты? Если они строго привязаны в /usr/lib?? что за *****??????? Название: Re: Динамические библиотеки Linux Отправлено: mutineer от Июнь 04, 2013, 10:47 Так ты же нашел уже про недистрибутивную компиляцию. Чем еще помогать?
Название: Re: Динамические библиотеки Linux Отправлено: CJ1 от Июнь 04, 2013, 10:48 Как это сделать на Qt?
Название: Re: Динамические библиотеки Linux Отправлено: mutineer от Июнь 04, 2013, 10:50 Как вобще переносить проекты? Если они строго привязаны в /usr/lib?? Устанавливать либы в /usr/lib при установке проекта. или делать rpath Название: Re: Динамические библиотеки Linux Отправлено: alex312 от Июнь 04, 2013, 10:58 http://www.qtcentre.org/threads/40128-How-to-set-rpath-in-Qt-Project
Название: Re: Динамические библиотеки Linux Отправлено: CJ1 от Июнь 04, 2013, 12:20 ОК! Так сделал...
Название: Re: Динамические библиотеки Linux Отправлено: Alex Custov от Июнь 04, 2013, 14:48 объясняю! В линуксе, выдумана какаето фигня с версиями so.1 so.2.0.0 и так далее. мне этот бред не нужен! какие злые эти дяди, выдумывают всякую фигню. Название: Re: Динамические библиотеки Linux Отправлено: Alex Custov от Июнь 04, 2013, 14:50 Ну помогите! Я уже замучался Как вобще переносить проекты? Если они строго привязаны в /usr/lib?? что за *****??????? Строго они не привязаны, изучи инструмент с которым работаешь. Библиотеки ищутся по некоторым путям, настроенным в ld.so.conf, куда входит /usr/lib в том числе. Если нужно распространять свою библиотеку, то её подгружают с помощью LD_LIBRARY_PATH |