Russian Qt Forum
Сентябрь 30, 2024, 22:35 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: Динамические библиотеки Linux  (Прочитано 8744 раз)
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

он ее не находит! Как быть?
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #1 : Июнь 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
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
CJ1
Гость
« Ответ #2 : Июнь 04, 2013, 10:09 »

неработает!!!
Но я понял! Мне нужна недистрибутивно скомпилировать библиотеку!! Только как это сделать?
Записан
m_ax
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2095



Просмотр профиля
« Ответ #3 : Июнь 04, 2013, 10:13 »

неработает!!!
Но я понял! Мне нужна недистрибутивно скомпилировать библиотеку!! Только как это сделать?
Не работает - пишется раздельно)

LIB_PATH - инициирована?
Записан

Над водой луна двурога. Сяду выпью за Ван Гога. Хорошо, что кот не пьет, Он и так меня поймет..

Arch Linux Plasma 5
CJ1
Гость
« Ответ #4 : Июнь 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
Записан
mutineer
Гость
« Ответ #5 : Июнь 04, 2013, 10:13 »

Цитировать
нужна недистрибутивно скомпилировать библиотеку
что это значит?

И окромя "неработает" хотелось бы увидеть конкретную ошибку
Записан
mutineer
Гость
« Ответ #6 : Июнь 04, 2013, 10:15 »

Как мне сделать что бы в итоге появлялся только .so

Тебе нужно создать символические ссылки libQIOMCDevice.so.1.0, libQIOMCDevice.so.1, libQIOMCDevice.so, которые будут указывать на libQIOMCDevice.so.1.0.0. Странно что они сами не создались во время сборки
Записан
CJ1
Гость
« Ответ #7 : Июнь 04, 2013, 10:16 »

объясняю! В линуксе, выдумана какаето фигня с версиями so.1 so.2.0.0 и так далее. мне этот бред не нужен!
Мне нужно чтобы появился .so файл я его копернул в каталог с программой и все работало! Как это сделать?
Записан
CJ1
Гость
« Ответ #8 : Июнь 04, 2013, 10:17 »

Цитировать
Странно что они сами не создались во время сборки
ничего странного! команда ln во время сборки говорит что не может работать с файловой системой VirtualBox!
Записан
mutineer
Гость
« Ответ #9 : Июнь 04, 2013, 10:19 »

Цитировать
Странно что они сами не создались во время сборки
ничего странного! команда ln во время сборки говорит что не может работать с файловой системой VirtualBox!

Переименуй файл тогда, раз у тебя файловая система без ссылок
Записан
CJ1
Гость
« Ответ #10 : Июнь 04, 2013, 10:19 »

ln failed to create symbolic link `libQIOMDevice` : Read-only file system
Записан
CJ1
Гость
« Ответ #11 : Июнь 04, 2013, 10:20 »

Цитировать
Переименуй файл тогда, раз у тебя файловая система без ссылок
пробовал переименовать в libQIOMCDevice.so
Тогда при запуске программа говорит ей нужен libQIOMCDevice.so.1
Записан
mutineer
Гость
« Ответ #12 : Июнь 04, 2013, 10:22 »

Цитировать
Переименуй файл тогда, раз у тебя файловая система без ссылок
пробовал переименовать в libQIOMCDevice.so
Тогда при запуске программа говорит ей нужен libQIOMCDevice.so.1

Вот поэтому в линуксе и есть эта чехарда с символическими ссылками на либы - приложение при линковке хочет .so, а при запуске .so.*. Попробуй так:
LIBS    += -l:libQIOMCDevice.so
Записан
CJ1
Гость
« Ответ #13 : Июнь 04, 2013, 10:24 »

Всеравно просит .so1
Записан
mutineer
Гость
« Ответ #14 : Июнь 04, 2013, 10:25 »

Ну тогда я вижу только два варианта - сделать ссылки, либо не линковаться, а грузить в рантайме
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.051 секунд. Запросов: 23.