Results 1 to 3 of 3

Thread: Andere/Neuere libstdc++ benutzen

  1. #1

    Default Andere/Neuere libstdc++ benutzen

    Hallo,

    ich möchte gerne eine Lib in meinem Programm verwenden, die std::regex_iterator verwendet (Wt-4.0.0). Leider unterstützt die libstdc++, die als Standard in LEAP 42.3 verwendet wird, dies (anscheinend) nicht. Vielleicht habe ich nach den falschen Suchbegriffen gesucht, aber ich habe keine wirkliche Lösung für mein Problem gefunden. Soweit ich herausgefunden habe, wird std::regex_iterator ab gcc 4.9 unterstützt. Dementsprechend habe ich gcc und g++ 5 (und auch 7) installiert. Aber auch wenn ich mit g++-7 versuche zu linken, bekomme ich einen Link-Error:
    Code:
    g++-7 -Wl,-O1 -o index.wt main.o application.o   -L/home/oracle/app/oracle/product/12/dbhome_1/lib -L/home/u01/app/oracle/product/12.1.0/dbhome_1/lib -L/u01/app/oracle/product/12.1.0/dbhome_1/lib -L/opt/oracle/app/oracle/product/12.1.0.1/client_1/lib -L/usr/local/lib64 -L/usr/local/lib -L/opt/oracle/product/12.1.0/client_1/lib -L/opt/oracle/app/oracle/product/12.1.0.1/lib -L/usr/lib64/gcc/x86_64-suse-linux/5 -lYpLibWidgets -lYpLibTaskbar -lYpLibMenu -lypconfig -lYpDb -lYpEmail -lYpGeneralInfo -lYpRabbitMq -lYpTypes -lYpHelper -lYpChannelInitialize -lYpChannelCommunity -lYpChannelPreferences -lYpChannelSocial -lYpCommon -lYpChat -lwt -lwthttp -lwtdbo -lclntsh -locci -lQt5Core -L/usr/lib64 -lpthread 
    /usr/local/lib/libwt.so: undefined reference to `std::regex_iterator<__gnu_cxx::__normal_iterator<char const*, std::string>, char, std::regex_traits<char> >::regex_iterator()'
    Wie man sehen kann, habe ich auch versucht, mit "-L..." den Pfad für gcc 5 mitzugeben, leider genau so erfolglos.

    Kann mir jemand helfen, die richtige Lib einzubinden (ggf. sagen, was noch installiert werden muss)?

    Gruß

    PS: Sorry, falls ich hier was falsch formatiert habe
    Torsten

  2. #2

    Default Re: Andere/Neuere libstdc++ benutzen

    g++-7 wählt automatisch die korrecte libstdc++

    Code:
    [a4z@t460p ~/tmp] [system] (18:53:35)
    A:\> cat tmpcode.cpp 
    #include <regex>
    #include <iterator>
    #include <iostream>
    #include <string>
     
    int main()
    {
        const std::string s = "Quick brown fox.";
     
        std::regex words_regex("[^\\s]+");
        auto words_begin = 
            std::sregex_iterator(s.begin(), s.end(), words_regex);
        auto words_end = std::sregex_iterator();
     
        std::cout << "Found " 
                  << std::distance(words_begin, words_end) 
                  << " words:\n";
     
        for (std::sregex_iterator i = words_begin; i != words_end; ++i) {
            std::smatch match = *i;                                                 
            std::string match_str = match.str(); 
            std::cout << match_str << '\n';
        }   
    }
    
    
    [a4z@t460p ~/tmp] [system] (18:53:39)                                                                                                                                                              
    A:\> g++-7 tmpcode.cpp                                                                                                                                                                             
                                                                                                                                                                                                       
    [a4z@t460p ~/tmp] [system] (18:53:49)                                                                                                                                                              
    A:\> ./a.out                                                                                                                                                                                       
    Found 3 words:                                                                                                                                                                                     
    Quick                                                                                                                                                                                              
    brown                                                                                                                                                                                              
    fox.
    kontrolliere ob du libstdc++6-devel-gcc7 installiert hast

  3. #3

    Default Re: Andere/Neuere libstdc++ benutzen

    Ja, die ist installiert. Tatsächlich kann ich Dein Beispiel auch compilieren und ausführen. Kann es an den oracle-libs liegen, das die auch mit g++-7 compiliert werden müssen? Oder anderen verwendeten libs?

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •