Samstag, Februar 22, 2020

Hilfe beim Aufbau boost asio-ssl-Beispiel

Habe ich gearbeitet, durch die asio-ssl-Beispiele (unten verlinkt). Trotz der durch die Bemühungen, ich habe keine link openssl in der boost-Beispiel. Die Ausgabe ld ist, dass ld fehlt Symbole aus libssl.ein. Die Sache, die ich nicht herausfinden können, ist, dass ich alle Symbole in der libssl.eine mit nm, der ld sagt, fehlen. Ich vermute, bin ich etwas dumm, aber ich bin nicht vertraut genug mit c++, es zu beheben. Ich habe auch mein makefile. Die Quelle ssl-client.cpp ist wörtlich aus dem link.

http://www.boost.org/doc/libs/1_41_0/doc/html/boost_asio/example/ssl/client.cpp

INCLUDES = -I /usr/local/boost_1_41_0/ -I /opt/local/include/
LIBS = -L/usr/local/boost_1_41_0/lib/libboost_system.a \
-L/opt/local/lib/libcrypto.a \
-L/opt/local/lib/libssl.a

CPP = g++

build: ssl-client

ssl-client: ssl-client.cpp
    $(CPP) $(LIBS) $(INCLUDES) ssl-client.cpp
  • Format-code durch Einrücken es 4 Leerzeichen (habe ich Weg gemacht und für Sie). Ist das wirklich euer Makefile von verbatim? Ich merke, du bist die variable definieren LIBS dann mit der variable LIB (ohne S).
  • Die LIBS -> LIB war nur ein kleiner Tippfehler aus, wenn ich Durcheinander herum. Sorry für die Verwirrung. Ich erwarte nicht, dass es zu formatieren makefiles also ich nicht versuchen. Danke für den Tipp!
  • CPP = g++ sieht nicht ganz richtig aus. Der C++ – compiler ist CXX, nicht CPP. CPP ist der C-Präprozessor.
InformationsquelleAutor Ben McNiel | 2010-01-28

1 Kommentar

  1. 4

    Ich glaube, du hast missverstanden wie die -L option funktioniert. -L gibt einen Pfad, in dem die Suche nach Bibliotheken. Zum angeben einer einzelnen Bibliothek zu verlinken, verwenden Sie die -l option auszulassen und den „lib“ – Präfix wie folgt:

    LIBS = -L/usr/local/boost_1_41_0/lib -L/opt/local/lib \
        -lboost_system -lcrypto -lssl

    Außerdem gibt es in der Regel kein Leerzeichen zwischen dem -I include-Pfad-option und den eigentlichen Pfad. Ich bin mir nicht sicher, ob ein Raum, in den es verursacht Probleme, aber Sie könnten versuchen, diese, um auf der sicheren Seite:

    INCLUDES = -I/usr/local/boost_1_41_0/ -I/opt/local/include/

    Auch, wie bereits in meinem Kommentar, Sie definiert die LIBS variable aber dann die LIB variable. Der Aufruf von g++ sollte wie folgt sein:

    $(CPP) $(LIBS) $(INCLUDES) ssl-client.cpp
    • Dank einer million. Ich wusste, es war etwas einfaches. Jetzt bin ich einen Schritt näher an nicht ein c++ – Anfänger.

Kostenlose Online-Tests