<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: Отложенная загрузка библиотек.</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8533.html</link>
    <description>Собственно, суть проблемы. Имеется скомпилированное CGI-приложение. Оно должно работать на каком то хостинге и при этом быть независимым от библиотек установленных на хостинге. То есть библиотеки должны загружаться не из /lib/ /usr/lib/ итп, а из установленного в файле настроек каталога. При этом LD_LIBRARY_PATH изменить возможности нет. Собственно есть вариант загружать библиотеку вручную с помощью системных вызовов, после чего получить указатели на нужные функции.&lt;br&gt;А нельзя ли прилинковать библиотеки на этапе компиляции, но при запуске приложения не загружать библиотеки а загрузить их вручную из кода. И чтобы проверка на наличие библиотек не выполнялась и сообщение вида &quot;...error while loading shared libraries...&quot; не выдавалась. Но при этом не искать указатели на нужные функции, а объявить их в коде просто как extern.&lt;br&gt;</description>

<item>
    <title>Отложенная загрузка библиотек. (f00l)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8533.html#9</link>
    <pubDate>Mon, 07 Dec 2009 06:10:53 GMT</pubDate>
    <description>&amp;gt;&amp;gt;man статическая компиляция. &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;В смысле использовать статические библиотеки (.a)? &lt;br&gt;&amp;gt;А если нет нужной? &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;Переформулируя вопрос: как в gcc сделать так что бы библиотека .so прилинковалась, &lt;br&gt;&amp;gt;но при этом не загружалась при запуске исполняемого файла автоматически. А &lt;br&gt;&amp;gt;после загрузки библиотеки из кода к функциям можно было бы обращаться? &lt;br&gt;&amp;gt;&lt;br&gt;&lt;br&gt;Используй набор функций dlopen(), dlsym() для динамической загрузки библиотеки и использования внутри программы , также при компиляции можно использовать опцию&lt;br&gt; -Wl,rpath,/local/lib указываешь путь и там программа будет искать библиотеку.&lt;br&gt;</description>
</item>

<item>
    <title>Отложенная загрузка библиотек. (Wazar)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8533.html#8</link>
    <pubDate>Sun, 06 Dec 2009 10:35:35 GMT</pubDate>
    <description>&amp;gt;&amp;gt;В этом случае можно под этот заголовочный файл скомпилировать свою стабовую библиотеку, &lt;br&gt;&amp;gt;&amp;gt;которая по вызову функций, объявленных в заголовочном файле будет вызывать подгруженные &lt;br&gt;&amp;gt;&amp;gt;уже во время работы приложения библиотеки. &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;Вариант реальный, но весьма трудоёмкий. &lt;br&gt;&amp;gt;Вообще исходная проблема лично мне кажется несколько надуманной. &lt;br&gt;&amp;gt;Если на хостинге есть возможность водрузить громоздкое проприетарное приложение &lt;br&gt;&amp;gt;(тот же Oracle, хотя бы в виде Instant Client) со всеми необходимыми &lt;br&gt;&amp;gt;настройками, &lt;br&gt;&amp;gt;то и библиотеки нужные поставить - тоже можно. &lt;br&gt;&lt;br&gt;Нет. Речь идет о недорогих хостингах. Просто я занимаюсь написанием фреймворка для создания сайтов на D. И имеются две версии. Первая - в виде демона, пока тестирую но в целом работает. Ей веб-сервер не нужен, и она предназначена для работы либо на собственном сервере, или хотя бы VDS. Вторая - CGI - для тех хостингов где демона запустить нельзя. Эта версия проще и уже работает, одна проблема - непонятно как быть с либами.&lt;br&gt;</description>
</item>

<item>
    <title>Отложенная загрузка библиотек. (DeadMustdie)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8533.html#7</link>
    <pubDate>Sat, 05 Dec 2009 17:08:56 GMT</pubDate>
    <description>&amp;gt;В этом случае можно под этот заголовочный файл скомпилировать свою стабовую библиотеку, &lt;br&gt;&amp;gt;которая по вызову функций, объявленных в заголовочном файле будет вызывать подгруженные &lt;br&gt;&amp;gt;уже во время работы приложения библиотеки. &lt;br&gt;&lt;br&gt;Вариант реальный, но весьма трудоёмкий.&lt;br&gt;Вообще исходная проблема лично мне кажется несколько надуманной.&lt;br&gt;Если на хостинге есть возможность водрузить громоздкое проприетарное приложение&lt;br&gt;(тот же Oracle, хотя бы в виде Instant Client) со всеми необходимыми настройками,&lt;br&gt;то и библиотеки нужные поставить - тоже можно.&lt;br&gt;</description>
</item>

<item>
    <title>Отложенная загрузка библиотек. (Вова)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8533.html#6</link>
    <pubDate>Fri, 04 Dec 2009 11:43:41 GMT</pubDate>
    <description>&amp;gt;&amp;gt;Собрать. &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;А если не имеется исходников? Вот, например, оракловый libociicus. Имеется so библиотека &lt;br&gt;&amp;gt;и заголовочные файлы. Поэтому собрать нельзя. &lt;br&gt;&lt;br&gt;В этом случае можно под этот заголовочный файл скомпилировать свою стабовую библиотеку, которая по вызову функций, объявленных в заголовочном файле будет вызывать подгруженные уже во время работы приложения библиотеки. &lt;br&gt;</description>
</item>

<item>
    <title>Отложенная загрузка библиотек. (Wazar)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8533.html#5</link>
    <pubDate>Fri, 04 Dec 2009 09:44:32 GMT</pubDate>
    <description>&amp;gt;Собрать. &lt;br&gt;&lt;br&gt;А если не имеется исходников? Вот, например, оракловый libociicus. Имеется so библиотека и заголовочные файлы. По этому собрать нельзя. Нет ли инструментов для конвертации динамических либ в статические?&lt;br&gt;</description>
</item>

<item>
    <title>Отложенная загрузка библиотек. (ze6ra)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8533.html#4</link>
    <pubDate>Fri, 04 Dec 2009 07:07:36 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;Да. &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;&amp;gt;А если нет нужной?&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;Собрать. &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;&amp;gt;Переформулируя вопрос: как в gcc сделать так что бы библиотека .so прилинковалась&lt;br&gt;&amp;gt;&amp;gt;но при этом не загружалась при запуске исполняемого файла автоматически&lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;Никак. Динамические библиотеки по определению для этого не предназначены. &lt;br&gt;&lt;br&gt;Поидее писать свой загрузчик динамических библиотек который будет выполнять ваши требования. В ELF вроде есть такая возможность. Так что при наличии времени и желания можно. Хотя может можно как-то и стандартный настроить на такое поведение.&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Отложенная загрузка библиотек. (Аноним)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8533.html#3</link>
    <pubDate>Fri, 04 Dec 2009 01:47:14 GMT</pubDate>
    <description>&amp;gt;В смысле использовать статические библиотеки (.a)?&lt;br&gt;&lt;br&gt;Да.&lt;br&gt;&lt;br&gt;&amp;gt;А если нет нужной?&lt;br&gt;&lt;br&gt;Собрать.&lt;br&gt;&lt;br&gt;&amp;gt;Переформулируя вопрос: как в gcc сделать так что бы библиотека .so прилинковалась&lt;br&gt;&amp;gt;но при этом не загружалась при запуске исполняемого файла автоматически&lt;br&gt;&lt;br&gt;Никак. Динамические библиотеки по определению для этого не предназначены.&lt;br&gt;</description>
</item>

<item>
    <title>Отложенная загрузка библиотек. (Wazar)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8533.html#2</link>
    <pubDate>Thu, 03 Dec 2009 11:54:35 GMT</pubDate>
    <description>&amp;gt;man статическая компиляция. &lt;br&gt;&lt;br&gt;В смысле использовать статические библиотеки (.a)?&lt;br&gt;А если нет нужной?&lt;br&gt;&lt;br&gt;Переформулируя вопрос: как в gcc сделать так что бы библиотека .so прилинковалась, но при этом не загружалась при запуске исполняемого файла автоматически. А после загрузки библиотеки из кода к функциям можно было бы обращаться?&lt;br&gt;</description>
</item>

<item>
    <title>Отложенная загрузка библиотек. (аноним)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID9/8533.html#1</link>
    <pubDate>Wed, 02 Dec 2009 19:14:11 GMT</pubDate>
    <description>man статическая компиляция.&lt;br&gt;&lt;br&gt;</description>
</item>

</channel>
</rss>
