Depends auf Pakete



  • Hab hier schon ein paar unterschiedliche Fragen gestellt, aber da gibt es eine Sache die ich gerne noch wissen möchte.
    Ich habe ein Programm geschrieben, dass die Libs libboost-system, libboost-filesystem und libboost-regex verwendet. Das Problem ist jetzt wenn ich das Programm in anderen Systemen verwenden möchte, werde ich dazu gezwungen die Version 1.54.0 zu verwenden. Diese Version habe ich beim entwickeln verwendet und möchte das nicht unbedingt auf diese Libversion beschränken. In apt gibt es verschiedene Versionen der Libs. Wie könnte ich mein Projekt gestalten, dass alle Libs ab Version 1.54.0 verwendet werden können?

    Ich habe ein System in dem die Versionen 1.55.0 verwendet werden, aber das Programm geht nur mit 1.54.0.



  • Könnte ich eigentlich Libs, anstatt sie einzubinden, direkt in mein Projekt importieren? Wäre in meinem Fall sinnvoll.



  • Link doch statisch anstatt dynamisch (.a anstatt .so). Problem gelöst, ist die exe zwar fetter aber was soll's 😃



  • Das geht? Ich arbeite momentan mit cmake, geht das da auch?



  • Versuchs mal vor dem FIND Package von boost hiermit:

    SET(Boost_USE_STATIC_LIBS ON) # Wichtig wenn boost statisch gelinkt werden soll
    


  • Ich habe mich mal nach dieser Anleitung gehalten http://www.cmake.org/Wiki/CMake/Tutorials/Exporting_and_Importing_Targets

    und das kam dabei raus.

    project(TrashManager)
    cmake_minimum_required(VERSION 2.8)
    aux_source_directory(. SRC_LIST)
    add_executable(${PROJECT_NAME} ${SRC_LIST})
    SET(Boost_USE_STATIC_LIBS ON)
    
    add_library(boost_filesystem STATIC IMPORTED)
    set_property(TARGET boost_filesystem PROPERTY IMPORTED_LOCATION /usr/lib/x86_64-linux-gnu/libboost_filesystem.a)
    target_link_libraries(${PROJECT_NAME} boost_filesystem)
    
    add_library(boost_system STATIC IMPORTED)
    set_property(TARGET boost_system PROPERTY IMPORTED_LOCATION /usr/lib/x86_64-linux-gnu/libboost_system.a)
    target_link_libraries(${PROJECT_NAME} boost_system)
    

    Ich habe den target_link_libraries rausgenommen weil ich dachte das geht ohne. Aber jetzt findet der Linker wohl die Bibliotheken nicht. Muss ich target_link_libraries wieder rein nehmen?

    edit: hab die Probleme oben lösen können, stehe aber jetzt vor einem neuen Problem. Ich habe die sqlite3 Lib statisch gelinkt wie oben und bekomme jetzt beim debuggen ein paar Fehlermeldungen.

    /usr/lib/x86_64-linux-gnu/libsqlite3.a(sqlite3.o):-1: In function `pthreadMutexTry':
    
    (.text+0x8cd5):-1: Fehler: undefined reference to `pthread_mutex_trylock'
    
    /usr/lib/x86_64-linux-gnu/libsqlite3.a(sqlite3.o):-1: In function `pthreadMutexAlloc':
    

    Das sind noch ein paar mehr, aber die beziehen sich auf unterschiedliche Functionen. Hat jemand eine Idee oder einen Tipp?

    edit2: keine ahnung wieso, aber problem gelöst



  • Bennisen schrieb:

    Ich habe ein System in dem die Versionen 1.55.0 verwendet werden, aber das Programm geht nur mit 1.54.0.

    was sind denn die breaking changes in boost?



  • kurze_frage schrieb:

    Bennisen schrieb:

    Ich habe ein System in dem die Versionen 1.55.0 verwendet werden, aber das Programm geht nur mit 1.54.0.

    was sind denn die breaking changes in boost?

    Von Version 1.54.0 bis 1.59.0 gibt es am Filesystem keine relevanten Änderungen.



  • Bennisen schrieb:

    /usr/lib/x86_64-linux-gnu/libsqlite3.a(sqlite3.o):-1: In function `pthreadMutexTry':
    
    (.text+0x8cd5):-1: Fehler: undefined reference to `pthread_mutex_trylock'
    
    /usr/lib/x86_64-linux-gnu/libsqlite3.a(sqlite3.o):-1: In function `pthreadMutexAlloc':
    

    Das sind noch ein paar mehr, aber die beziehen sich auf unterschiedliche Functionen. Hat jemand eine Idee oder einen Tipp?

    edit2: keine ahnung wieso, aber problem gelöst

    -lpthread dem gcc mitgeschickt



  • Dieser Thread wurde von Moderator/in nachtfeuer aus dem Forum Rund um die Programmierung in das Forum Linux/Unix verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Dieser Thread wurde von Moderator/in nman aus dem Forum Linux/Unix in das Forum Compiler- und IDE-Forum verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Log in to reply