<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: Линковка разделяемых библиотек</title>
    <link>https://m.opennet.dev/openforum/vsluhforumID9/7007.html</link>
    <description>Есть разделяемая библиотека - .so модуль.&lt;br&gt;Все с ним хорошо - загружается, функции вызываются.&lt;br&gt;Один прикол - Во время компиляции библиотеки не все необходимы модули прилинкованы - указаны в маке файле. Компиляция происходит успешно, а то, что есть неразрешенные ссылки мы узнаем только тогда, когда делается dlopen.&lt;br&gt;Что, в Линухе - разделяемая библиотека может пользоваться классами в основном модуле и ругачка происходит - только когда &quot;на лету&quot; этого нельзя сделать ?&lt;br&gt;Если это не так - то почему компилятор не &quot;ругается&quot; во время линковки so модуля ? &lt;br&gt;По идее, даже если указана опция -fPIC - линковщик должен был об этом сказать. &lt;br&gt;А то получается - об неразрешенных связях я не знаю до самого момента згрузки.&lt;br&gt;&lt;br&gt;&lt;br&gt;компиляция .so модуля&lt;br&gt;с++ -с main.cpp -o main.o -fPIC&lt;br&gt;&lt;br&gt;линковка .so модуля&lt;br&gt;с++ main.o -o main.so -fPIC -shared&lt;br&gt;&lt;br&gt; &lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;</description>

<item>
    <title>Линковка разделяемых библиотек (oaealex)</title>
    <link>https://m.opennet.dev/openforum/vsluhforumID9/7007.html#6</link>
    <pubDate>Tue, 11 Dec 2007 09:37:35 GMT</pubDate>
    <description>&lt;br&gt;&amp;gt;Попробую предположить: ldd --as-needed ? &lt;br&gt;&lt;br&gt;Нет такого ключа в опциях. Да и нужно сообщение &quot;при линковке&quot; от gcc .&lt;br&gt;&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Линковка разделяемых библиотек (phpcoder)</title>
    <link>https://m.opennet.dev/openforum/vsluhforumID9/7007.html#5</link>
    <pubDate>Tue, 11 Dec 2007 08:38:49 GMT</pubDate>
    <description>&#091;...&#093;&lt;br&gt;&amp;gt;Поэтому и есть подозрение что данный вопрос должен быть красиво решен &lt;br&gt;&amp;gt;на этапе линковки. Только неизвестно - а как ?. &lt;br&gt;&lt;br&gt;Попробую предположить: ldd --as-needed ?&lt;br&gt;</description>
</item>

<item>
    <title>Линковка разделяемых библиотек (oaealex)</title>
    <link>https://m.opennet.dev/openforum/vsluhforumID9/7007.html#4</link>
    <pubDate>Mon, 10 Dec 2007 05:06:33 GMT</pubDate>
    <description>&amp;gt;Це видно человека с опытом разработки под Win32. &lt;br&gt;&lt;br&gt;Угу :) Простите пожалуста :)&lt;br&gt;&amp;gt;Идеология работы с разделяемыми библиотеками под UNIX другая. Действительно, часть символов может &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;на этапе линковки. Только неизвестно - а как ?.&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;</description>
</item>

<item>
    <title>Линковка разделяемых библиотек (oaealex)</title>
    <link>https://m.opennet.dev/openforum/vsluhforumID9/7007.html#3</link>
    <pubDate>Mon, 10 Dec 2007 05:02:00 GMT</pubDate>
    <description>&amp;gt;&amp;gt;Компиляция происходит успешно, а то, что &lt;br&gt;&amp;gt;&amp;gt;есть неразрешенные ссылки мы узнаем только тогда, когда делается dlopen. &lt;br&gt;&amp;gt;&lt;br&gt;&amp;gt;А как, по вашему, компилятор узнает во время линковки, с какими аргументами &lt;br&gt;&amp;gt;будет вызвана функция dlopen? Есть разница: прилинковать библиотеку или открыть её &lt;br&gt;&amp;gt;(dlopen) во время выполнения. dlopen нужна в тех случаях, когда на &lt;br&gt;&amp;gt;этапе линковки неизвестно, какая библиотека будет использоваться. Наглядный пример - плагины, &lt;br&gt;&lt;br&gt;Вот про них - про плагины - и речь.  И dlopen - такой как в мане с именем библиотеки.&lt;br&gt;Но дело не в dlopen- он то как раз делает свою работу и делает ее хорошо.&lt;br&gt;&lt;br&gt;Напрягает то, что линковщиком библиотеки не контролируется наличие неопределенных ссылок. Былобы конечно &quot;круто&quot;  в данном случае, чтобы сам dlopen находил эти ссылки в модуле основной программы - только слабо представляю себе как это будет выглядеть физически&lt;br&gt;Но можно успокоиться - этого не происходит. &lt;br&gt;Поэтому и непонятка - почему линковщик вдруг делает за меня предположения - что те функции кот</description>
</item>

<item>
    <title>Линковка разделяемых библиотек (DeadMustdie)</title>
    <link>https://m.opennet.dev/openforum/vsluhforumID9/7007.html#2</link>
    <pubDate>Sun, 09 Dec 2007 12:58:42 GMT</pubDate>
    <description>Це видно человека с опытом разработки под Win32.&lt;br&gt;Идеология работы с разделяемыми библиотеками под UNIX другая. Действительно, часть символов может быть недоступна на этапе линковки и предоставляться уже при загрузке библиотеки в основную программу.&lt;br&gt;</description>
</item>

<item>
    <title>Линковка разделяемых библиотек (jd)</title>
    <link>https://m.opennet.dev/openforum/vsluhforumID9/7007.html#1</link>
    <pubDate>Sat, 08 Dec 2007 03:32:17 GMT</pubDate>
    <description>&amp;gt;Компиляция происходит успешно, а то, что &lt;br&gt;&amp;gt;есть неразрешенные ссылки мы узнаем только тогда, когда делается dlopen. &lt;br&gt;&lt;br&gt;А как, по вашему, компилятор узнает во время линковки, с какими аргументами будет вызвана функция dlopen? Есть разница: прилинковать библиотеку или открыть её (dlopen) во время выполнения. dlopen нужна в тех случаях, когда на этапе линковки неизвестно, какая библиотека будет использоваться. Наглядный пример - плагины, которых может быть произвольное количество. А может и вовсе не быть.&lt;br&gt;</description>
</item>

</channel>
</rss>
