<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Boost-Filesystem statisch linken klappt nicht]]></title><description><![CDATA[<p>Servus,</p>
<p>ich kriege es nicht gebacken Filesystem von Boost bei meinem Miniprojekt statisch zu linken. Ich will, dass die ausführbare Datei dann auf dem anderen Computer auch läuft - beides sind Linux-Maschinen, ich denke da sollte es keine Probleme geben.</p>
<p>Ich habe schon etwas rumgelesen und bin nicht der erste bei dem es in der Kombo Linux und Boost Filesystem harpert. Ich habe mal in meinen usr/lib/-Ordner geschaut und für boost liegen sowohl die .so wie auch die .a-Dateien im Ordner. Dazu kompiliert das Programm wenn ich das static weglasse ... das wundert mich. Danke vorab für einen Vorschag, hier noch der Link zum anderen Problemhaber: <a href="http://ubuntuforums.org/archive/index.php/t-897996.html" rel="nofollow">http://ubuntuforums.org/archive/index.php/t-897996.html</a></p>
<p>Also Code des Snippets:</p>
<pre><code class="language-cpp">#include &lt;boost/filesystem.hpp&gt;
#include &lt;boost/operators.hpp&gt;

#include &lt;boost/random/mersenne_twister.hpp&gt;
#include &lt;boost/random/uniform_int.hpp&gt;
#include &lt;boost/random/variate_generator.hpp&gt;
#include &lt;ctime&gt;

#include&lt;iostream&gt;
#include &lt;sstream&gt;

using namespace std;

    class Dice {
    public:
        Dice() : engine( std::time(0) ) { // Funktor-Einsatz
        };
        int operator()(int minIncluded, int maxIncluded) {
            return boost::uniform_int&lt;int&gt;(minIncluded, maxIncluded)(engine);
        }
    private:
        boost::mt19937 engine;
    };

    int getRandomInteger(Dice&amp; dice, int minIncluded, int maxIncluded) {
        int ranInt = dice(minIncluded, maxIncluded);
        return ranInt;
    }

int main( int argc, char* argv[] )
{
	Dice d;
	cout &lt;&lt; &quot; Boost-Wuerfeln ... \n&quot;;

	cout &lt;&lt; &quot; Wuerfe: &quot; 
		&lt;&lt; getRandomInteger(d, 1, 6) &lt;&lt; &quot;; &quot;
		&lt;&lt; getRandomInteger(d, 1, 6) &lt;&lt; &quot;; &quot;
		&lt;&lt; getRandomInteger(d, 1, 6) &lt;&lt; &quot;; &quot;;

		// Verzeichnis scripts anlegen
		string s = &quot;&quot;;
		stringstream ss;
		ss &lt;&lt; argv[1];
		s = ss.str();
                string pathScriptsDir = &quot;&quot;;
                pathScriptsDir += s;
                pathScriptsDir += &quot;boosttest&quot;;

                if ( boost::filesystem::exists( pathScriptsDir.c_str() ) )
                {
                    cout &lt;&lt; &quot;| ... Verzeichnis &quot; &lt;&lt; pathScriptsDir &lt;&lt; &quot; existiert bereits!\n&quot;;
                } else {
                    boost::filesystem::create_directory(pathScriptsDir.c_str());
                    cout &lt;&lt; &quot;| ... Verzeichnis &quot; &lt;&lt; pathScriptsDir &lt;&lt; &quot; angelegt.\n&quot;;
                }

}
</code></pre>
<p>Das Kompilierkommando ist:<br />
g++ -o boostfullstatic -I/usr/include/boost/ -static -lboost_filesystem -lboost_system fullboost.cpp</p>
<p>Fehlermeldung ist:<br />
Kompiliere ...<br />
/tmp/cc52baUy.o: In function <code>\_\_static\_initialization\_and\_destruction_0(int, int)': fullboost.cpp:(.text+0x41b): undefined reference to</code>boost::system::get_system_category()'<br />
fullboost.cpp:(.text+0x425): undefined reference to <code>boost::system::get\_generic\_category()' fullboost.cpp:(.text+0x42f): undefined reference to</code>boost::system::get_generic_category()'<br />
fullboost.cpp:(.text+0x439): undefined reference to <code>boost::system::get\_generic\_category()' fullboost.cpp:(.text+0x443): undefined reference to</code>boost::system::get_system_category()'<br />
/tmp/cc52baUy.o: In function <code>boost::system::error\_code::error\_code()': fullboost.cpp:(.text.\_ZN5boost6system10error\_codeC1Ev\[boost::system::error\_code::error\_code()\]+0x10): undefined reference to</code>boost::system::get_system_category()'<br />
/tmp/cc52baUy.o: In function <code>boost::enable\_if&lt;boost::filesystem::is\_basic\_path&lt;boost::filesystem::basic\_path&lt;std::basic\_string&lt;char, std::char\_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;, boost::filesystem::path\_traits&gt; &gt;, bool&gt;::type boost::filesystem::exists&lt;boost::filesystem::basic\_path&lt;std::basic\_string&lt;char, std::char\_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;, boost::filesystem::path\_traits&gt; &gt;(boost::filesystem::basic\_path&lt;std::basic\_string&lt;char, std::char\_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;, boost::filesystem::path_traits&gt; const&amp;)': fullboost.cpp:(.text.\_ZN5boost10filesystem6existsINS0\_10basic\_pathISsNS0\_11path\_traitsEEEEENS\_9enable\_ifINS0\_13is\_basic\_pathIT\_EEbE4typeERKS7\_\[boost::enable\_if&lt;boost::filesystem::is\_basic\_path&lt;boost::filesystem::basic\_path&lt;std::basic\_string&lt;char, std::char\_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;, boost::filesystem::path\_traits&gt; &gt;, bool&gt;::type boost::filesystem::exists&lt;boost::filesystem::basic\_path&lt;std::basic\_string&lt;char, std::char\_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;, boost::filesystem::path\_traits&gt; &gt;(boost::filesystem::basic\_path&lt;std::basic\_string&lt;char, std::char\_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;, boost::filesystem::path\_traits&gt; const&amp;)\]+0x3d): undefined reference to</code>boost::filesystem::detail::status_api(std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const&amp;, boost::system::error_code&amp;)'<br />
/tmp/cc52baUy.o: In function <code>boost::enable\_if&lt;boost::filesystem::is\_basic\_path&lt;boost::filesystem::basic\_path&lt;std::basic\_string&lt;char, std::char\_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;, boost::filesystem::path\_traits&gt; &gt;, bool&gt;::type boost::filesystem::create\_directory&lt;boost::filesystem::basic\_path&lt;std::basic\_string&lt;char, std::char\_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;, boost::filesystem::path\_traits&gt; &gt;(boost::filesystem::basic\_path&lt;std::basic\_string&lt;char, std::char\_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;, boost::filesystem::path\_traits&gt; const&amp;)': fullboost.cpp:(.text.\_ZN5boost10filesystem16create\_directoryINS0\_10basic\_pathISsNS0\_11path\_traitsEEEEENS\_9enable\_ifINS0\_13is\_basic\_pathIT\_EEbE4typeERKS7_\[boost::enable\_if&lt;boost::filesystem::is\_basic\_path&lt;boost::filesystem::basic\_path&lt;std::basic\_string&lt;char, std::char\_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;, boost::filesystem::path\_traits&gt; &gt;, bool&gt;::type boost::filesystem::create\_directory&lt;boost::filesystem::basic\_path&lt;std::basic\_string&lt;char, std::char\_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;, boost::filesystem::path\_traits&gt; &gt;(boost::filesystem::basic\_path&lt;std::basic\_string&lt;char, std::char\_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;, boost::filesystem::path\_traits&gt; const&amp;)\]+0x2b): undefined reference to</code>boost::filesystem::detail::create_directory_api(std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const&amp;)'<br />
collect2: ld returned 1 exit status<br />
Return: 256</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/291315/boost-filesystem-statisch-linken-klappt-nicht</link><generator>RSS for Node</generator><lastBuildDate>Mon, 17 Aug 2026 20:37:50 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/291315.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 15 Aug 2011 11:41:11 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Boost-Filesystem statisch linken klappt nicht on Mon, 15 Aug 2011 11:41:11 GMT]]></title><description><![CDATA[<p>Servus,</p>
<p>ich kriege es nicht gebacken Filesystem von Boost bei meinem Miniprojekt statisch zu linken. Ich will, dass die ausführbare Datei dann auf dem anderen Computer auch läuft - beides sind Linux-Maschinen, ich denke da sollte es keine Probleme geben.</p>
<p>Ich habe schon etwas rumgelesen und bin nicht der erste bei dem es in der Kombo Linux und Boost Filesystem harpert. Ich habe mal in meinen usr/lib/-Ordner geschaut und für boost liegen sowohl die .so wie auch die .a-Dateien im Ordner. Dazu kompiliert das Programm wenn ich das static weglasse ... das wundert mich. Danke vorab für einen Vorschag, hier noch der Link zum anderen Problemhaber: <a href="http://ubuntuforums.org/archive/index.php/t-897996.html" rel="nofollow">http://ubuntuforums.org/archive/index.php/t-897996.html</a></p>
<p>Also Code des Snippets:</p>
<pre><code class="language-cpp">#include &lt;boost/filesystem.hpp&gt;
#include &lt;boost/operators.hpp&gt;

#include &lt;boost/random/mersenne_twister.hpp&gt;
#include &lt;boost/random/uniform_int.hpp&gt;
#include &lt;boost/random/variate_generator.hpp&gt;
#include &lt;ctime&gt;

#include&lt;iostream&gt;
#include &lt;sstream&gt;

using namespace std;

    class Dice {
    public:
        Dice() : engine( std::time(0) ) { // Funktor-Einsatz
        };
        int operator()(int minIncluded, int maxIncluded) {
            return boost::uniform_int&lt;int&gt;(minIncluded, maxIncluded)(engine);
        }
    private:
        boost::mt19937 engine;
    };

    int getRandomInteger(Dice&amp; dice, int minIncluded, int maxIncluded) {
        int ranInt = dice(minIncluded, maxIncluded);
        return ranInt;
    }

int main( int argc, char* argv[] )
{
	Dice d;
	cout &lt;&lt; &quot; Boost-Wuerfeln ... \n&quot;;

	cout &lt;&lt; &quot; Wuerfe: &quot; 
		&lt;&lt; getRandomInteger(d, 1, 6) &lt;&lt; &quot;; &quot;
		&lt;&lt; getRandomInteger(d, 1, 6) &lt;&lt; &quot;; &quot;
		&lt;&lt; getRandomInteger(d, 1, 6) &lt;&lt; &quot;; &quot;;

		// Verzeichnis scripts anlegen
		string s = &quot;&quot;;
		stringstream ss;
		ss &lt;&lt; argv[1];
		s = ss.str();
                string pathScriptsDir = &quot;&quot;;
                pathScriptsDir += s;
                pathScriptsDir += &quot;boosttest&quot;;

                if ( boost::filesystem::exists( pathScriptsDir.c_str() ) )
                {
                    cout &lt;&lt; &quot;| ... Verzeichnis &quot; &lt;&lt; pathScriptsDir &lt;&lt; &quot; existiert bereits!\n&quot;;
                } else {
                    boost::filesystem::create_directory(pathScriptsDir.c_str());
                    cout &lt;&lt; &quot;| ... Verzeichnis &quot; &lt;&lt; pathScriptsDir &lt;&lt; &quot; angelegt.\n&quot;;
                }

}
</code></pre>
<p>Das Kompilierkommando ist:<br />
g++ -o boostfullstatic -I/usr/include/boost/ -static -lboost_filesystem -lboost_system fullboost.cpp</p>
<p>Fehlermeldung ist:<br />
Kompiliere ...<br />
/tmp/cc52baUy.o: In function <code>\_\_static\_initialization\_and\_destruction_0(int, int)': fullboost.cpp:(.text+0x41b): undefined reference to</code>boost::system::get_system_category()'<br />
fullboost.cpp:(.text+0x425): undefined reference to <code>boost::system::get\_generic\_category()' fullboost.cpp:(.text+0x42f): undefined reference to</code>boost::system::get_generic_category()'<br />
fullboost.cpp:(.text+0x439): undefined reference to <code>boost::system::get\_generic\_category()' fullboost.cpp:(.text+0x443): undefined reference to</code>boost::system::get_system_category()'<br />
/tmp/cc52baUy.o: In function <code>boost::system::error\_code::error\_code()': fullboost.cpp:(.text.\_ZN5boost6system10error\_codeC1Ev\[boost::system::error\_code::error\_code()\]+0x10): undefined reference to</code>boost::system::get_system_category()'<br />
/tmp/cc52baUy.o: In function <code>boost::enable\_if&lt;boost::filesystem::is\_basic\_path&lt;boost::filesystem::basic\_path&lt;std::basic\_string&lt;char, std::char\_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;, boost::filesystem::path\_traits&gt; &gt;, bool&gt;::type boost::filesystem::exists&lt;boost::filesystem::basic\_path&lt;std::basic\_string&lt;char, std::char\_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;, boost::filesystem::path\_traits&gt; &gt;(boost::filesystem::basic\_path&lt;std::basic\_string&lt;char, std::char\_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;, boost::filesystem::path_traits&gt; const&amp;)': fullboost.cpp:(.text.\_ZN5boost10filesystem6existsINS0\_10basic\_pathISsNS0\_11path\_traitsEEEEENS\_9enable\_ifINS0\_13is\_basic\_pathIT\_EEbE4typeERKS7\_\[boost::enable\_if&lt;boost::filesystem::is\_basic\_path&lt;boost::filesystem::basic\_path&lt;std::basic\_string&lt;char, std::char\_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;, boost::filesystem::path\_traits&gt; &gt;, bool&gt;::type boost::filesystem::exists&lt;boost::filesystem::basic\_path&lt;std::basic\_string&lt;char, std::char\_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;, boost::filesystem::path\_traits&gt; &gt;(boost::filesystem::basic\_path&lt;std::basic\_string&lt;char, std::char\_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;, boost::filesystem::path\_traits&gt; const&amp;)\]+0x3d): undefined reference to</code>boost::filesystem::detail::status_api(std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const&amp;, boost::system::error_code&amp;)'<br />
/tmp/cc52baUy.o: In function <code>boost::enable\_if&lt;boost::filesystem::is\_basic\_path&lt;boost::filesystem::basic\_path&lt;std::basic\_string&lt;char, std::char\_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;, boost::filesystem::path\_traits&gt; &gt;, bool&gt;::type boost::filesystem::create\_directory&lt;boost::filesystem::basic\_path&lt;std::basic\_string&lt;char, std::char\_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;, boost::filesystem::path\_traits&gt; &gt;(boost::filesystem::basic\_path&lt;std::basic\_string&lt;char, std::char\_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;, boost::filesystem::path\_traits&gt; const&amp;)': fullboost.cpp:(.text.\_ZN5boost10filesystem16create\_directoryINS0\_10basic\_pathISsNS0\_11path\_traitsEEEEENS\_9enable\_ifINS0\_13is\_basic\_pathIT\_EEbE4typeERKS7_\[boost::enable\_if&lt;boost::filesystem::is\_basic\_path&lt;boost::filesystem::basic\_path&lt;std::basic\_string&lt;char, std::char\_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;, boost::filesystem::path\_traits&gt; &gt;, bool&gt;::type boost::filesystem::create\_directory&lt;boost::filesystem::basic\_path&lt;std::basic\_string&lt;char, std::char\_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;, boost::filesystem::path\_traits&gt; &gt;(boost::filesystem::basic\_path&lt;std::basic\_string&lt;char, std::char\_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt;, boost::filesystem::path\_traits&gt; const&amp;)\]+0x2b): undefined reference to</code>boost::filesystem::detail::create_directory_api(std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const&amp;)'<br />
collect2: ld returned 1 exit status<br />
Return: 256</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2106309</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2106309</guid><dc:creator><![CDATA[Jay1980]]></dc:creator><pubDate>Mon, 15 Aug 2011 11:41:11 GMT</pubDate></item><item><title><![CDATA[Reply to Boost-Filesystem statisch linken klappt nicht on Mon, 15 Aug 2011 11:52:32 GMT]]></title><description><![CDATA[<p>Hmm, funktioniert bei mir. Deine Fehlermeldungen sind aber genau die, die man bekommen würde, wenn man das <code>-lboost_system</code> weglassen würde. Daher vermute ich einen Fehler bei der Bedienung deinerseits.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2106312</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2106312</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 15 Aug 2011 11:52:32 GMT</pubDate></item><item><title><![CDATA[Reply to Boost-Filesystem statisch linken klappt nicht on Mon, 15 Aug 2011 11:53:00 GMT]]></title><description><![CDATA[<p>Ah, manchmal kann es so einfach sein, die Reihenfolge der Parameter spielt bei g++ eine Rolle ... so gings:<br />
g++ -o boostfullstatic fullboost.cpp -I/usr/include/boost/ -static -lboost_filesystem -lboost_system</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2106313</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2106313</guid><dc:creator><![CDATA[Jay1980]]></dc:creator><pubDate>Mon, 15 Aug 2011 11:53:00 GMT</pubDate></item><item><title><![CDATA[Reply to Boost-Filesystem statisch linken klappt nicht on Mon, 15 Aug 2011 11:57:22 GMT]]></title><description><![CDATA[<p>Die Reihenfolge spielt immer eine Rolle, das ist keine Eigenart des g++. Hinten stehen die Bibliotheken, die von den Bibliotheken weiter vorne gebraucht werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2106316</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2106316</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Mon, 15 Aug 2011 11:57:22 GMT</pubDate></item></channel></rss>