Frage

Ich habe versucht, einige Anwendungen zu machen, die alle auf der gleichen Bibliothek verlassen und dynamische Bibliotheken waren mein erster Gedanke: So begann ich, die „Library“ zu schreiben:

/* ThinFS.h */

class FileSystem {
public:
    static void create_container(string file_name); //Creates a new container 
};

/* ThinFS.cpp */
#include "ThinFS.h"
void FileSystem::create_container(string file_name) {
     cout<<"Seems like I am going to create a new file called "<<file_name.c_str()<<endl;
}

ich kompilieren Sie dann die "Library"

g++ -shared -fPIC FileSystem.cpp -o ThinFS.o

Ich schrieb dann schnell eine Datei, die die Bibliothek nutzt:

#include "ThinFS.h"
int main() {
    FileSystem::create_container("foo");
    return (42);
}

Ich habe dann versucht, das kompilieren mit

g++ main.cpp -L. -lThinFS

Aber es wird mit dem folgenden Fehler nicht kompilieren:

/usr/bin/ld: cannot find -lThinFS
collect2: ld returned 1 exit status

Ich glaube, ich bin fehlt etwas sehr offensichtlich, bitte helfen Sie mir:)

War es hilfreich?

Lösung

-lfoo sucht eine Bibliothek mit dem Namen libfoo.a (statisch) oder libfoo.so (gemeinsam) in der aktuellen Bibliothek Pfad, so die Bibliothek zu erstellen, benötigen Sie g++ -shared -fPIC FileSystem.cpp -o libThinFS.so verwenden

Andere Tipps

Sie können mit

g++ main.cpp -L. -l:ThinFS 

Die Verwendung von „Doppelpunkt“ wird die Bibliotheksnamen verwenden, wie es ist, sondern erfordern einen Präfix von „lib“

der Name der Ausgabedatei sollte libThinFS.so , z.

g++ -shared -fPIC FileSystem.cpp -o libThinFS.so

Das Ergebnis g++ -shared -fPIC FileSystem.cpp ist kein Objekt-Datei, so sollte es nicht mit .o beenden. Außerdem sollten gemeinsam genutzte Bibliotheken genannt werden libXXX.so. Benennen Sie die Bibliothek und es wird funktionieren.

Probiert diesen Artikel aus.

http://www.yolinux.com/TUTORIALS/LibraryArchives-StaticAndDynamic.html

Eine gute Quelle, wie verschiedene Arten von Bibliotheken zu bauen. Es beschreibt auch, wie und wo sie zu benutzen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top