Название: проект и динамическая библиотека Отправлено: mokynis от Октябрь 04, 2010, 09:16 пытаюсь по Шлее написать программку, которая бы использовала внешнюю библиотеку. Ничего не получается. Читал http://www.prog.org.ru/topic_8259_15.html (http://www.prog.org.ru/topic_8259_15.html) Там и библиотека, и сама программа собираются в рамках одного проекта. Я хочу, чтобы программа и библиотека были каждая сама по себе-2 отдельных проекта. Хоть как-то запустить удалось только из среды Qt Creator'а. При попытке запустить программку саму по себе, лается, что
Цитировать error while loading shared libraries: libmyLib.so.1: cannot open shared object file: No such file or directory Вот тут http://forum.vingrad.ru/forum/topic-307288.html (http://forum.vingrad.ru/forum/topic-307288.html) советуют изменить переменную среды, но не хочется засорять LIBRARY_PATH - мало ли где и каких библиотек пока учу я тут наклепаю. Как можно подцепить библиотеку, которая находится ну, хотя бы там же, где и запускается ее использующая программа? Свой опус прилагаюНазвание: Re: проект и динамическая библиотека Отправлено: kuzulis от Октябрь 04, 2010, 09:31 1. Для тестирования в процессе разработки можно довольствоваться LIBRARY_PATH
2. Но, когда уже все перепроверено и оттестировано - то нужно создать под конкретный дистр линукса "инсталляционный" пакет с вашей программой, который бы включал: сам бинарь приложения + бинарь/бинари разделяемой библиотеки + другие необходимые файлы (которые Вы считаете необходимыми). При этом после установки вашего пакета бинарики автоматом установятся в /usr/bin, библиотеки в /usr/lib, остальные файлы или в /etc или еще куда. Хотя пути установки будут зависеть от типа используемого дистрибутива. 3. Чтобы сделать универсальную "инсталляшку" (с условием, что ваша программка будет лежать в какой-то одной директории и содержать бинарики и библиотеки в этой директории <ну или в нескольких поддиректориях вашей директории>) вы должны, например, создать скрипт в котором бы было прописано LIBRARY_PATH (т.е. аналогично п.1.) и другие сопусттвующие данные. И теперь, для того чтобы запустить вашу программу нужно запустить скрипт, который все сделает сам. Как то так. Я бы сделал п.2. И да, п.4 : можно спроектировать приложение так, чтобы разделяемая библиотека загружалась динамически в процессе работы вашей программы (т.е. в этом случае программа не линкуется с библиотекой). При этом ваша программа должна содержать какой-то конфигурационный файл в котором был бы указан путь к директории с библиотеками и т.п.. И при своем запуске она читала бы конфиг и подгружала искомую библиотеку. По какому пути Вам идти - решать Вам. ЗЫ: 1. тема не относится к Qt в принципе. 2. мусолилать уже стопиццот раз. Название: Re: проект и динамическая библиотека Отправлено: SASA от Октябрь 04, 2010, 10:35 По поводу пункта 3 можно подсмотреть как это делает КуТэ Кретор.
Название: Re: проект и динамическая библиотека Отправлено: mokynis от Октябрь 04, 2010, 14:25 to kuzulis
а можно поподробней про 4 пункт? Кажется, это как раз то, что хотелось. Путь я и в самой программе пропишу если что... Главное принцип-что сделать чтобы без лишнего мусора в самой системе воспользоваться библиотекой. Ну не хочу я забивать свой Linux своим же мусором Название: Re: проект и динамическая библиотека Отправлено: kuzulis от Октябрь 04, 2010, 14:36 Цитировать to kuzulis Тогда используй :а можно поподробней про 4 пункт? Кажется, это как раз то, что хотелось. Путь я и в самой программе пропишу если что... Главное принцип-что сделать чтобы без лишнего мусора в самой системе воспользоваться библиотекой. Ну не хочу я забивать свой Linux своим же мусором 1. ИЛИ QPluginLoader, он как раз для этого и предназначен. Это если в том случае если твоей библиотекой будет пользоваться только твое приложение или другие приложения написаные на Qt4. 2. ИЛИ QLibrary, но в этом случае придется немножко подшаманить с исходниками твоей библиотеки в части макросов EXPORT/IMPORT. Описание как это сделать есть в ассистенте. И тогда ею могут пользоваться любые приложения (например написанные на чистом С/С++ и т.п.) Все зависит от того что тебе нужно. Читай, разбирайся. :) --- |