GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So richten Sie googleTest als gemeinsam genutzte Bibliothek unter Linux ein

Ich habe eine Weile gebraucht, um das herauszufinden, weil das normale "make install" entfernt wurde und ich cmake nicht verwende. Hier ist meine Erfahrung zu teilen. Bei der Arbeit habe ich keinen Root-Zugriff auf Linux, also habe ich das Google-Testframework in meinem Home-Verzeichnis installiert:~/usr/gtest/ .

So installieren Sie das Paket in ~/usr/gtest/ als gemeinsam genutzte Bibliotheken, zusammen mit dem Beispiel-Build:

$ mkdir ~/temp
$ cd ~/temp
$ unzip gtest-1.7.0.zip 
$ cd gtest-1.7.0
$ mkdir mybuild
$ cd mybuild
$ cmake -DBUILD_SHARED_LIBS=ON -Dgtest_build_samples=ON -G"Unix Makefiles" ..
$ make
$ cp -r ../include/gtest ~/usr/gtest/include/
$ cp lib*.so ~/usr/gtest/lib

Um die Installation zu validieren, verwenden Sie die folgende test.c als einfaches Testbeispiel:

    #include <gtest/gtest.h>
    TEST(MathTest, TwoPlusTwoEqualsFour) {
        EXPECT_EQ(2 + 2, 4);
    }

    int main(int argc, char **argv) {
        ::testing::InitGoogleTest( &argc, argv );
        return RUN_ALL_TESTS();
    }

Kompilieren:

    $ export GTEST_HOME=~/usr/gtest
    $ export LD_LIBRARY_PATH=$GTEST_HOME/lib:$LD_LIBRARY_PATH
    $ g++ -I $GTEST_HOME/include -L $GTEST_HOME/lib -lgtest -lgtest_main -lpthread test.cpp 

Bevor Sie beginnen, stellen Sie sicher, dass Sie diesen Hinweis von Google gelesen und verstanden haben! Dieses Tutorial macht die Verwendung von gtest einfach, kann aber böse Fehler einführen.

1. Holen Sie sich das Googletest-Framework

wget https://github.com/google/googletest/archive/release-1.8.0.tar.gz

Oder holen Sie es von Hand. Ich werde diese kleine Anleitung nicht pflegen, wenn Sie also darauf gestoßen sind und die Links veraltet sind, können Sie sie gerne bearbeiten.

2. Google Test entpacken und erstellen

tar xf release-1.8.0.tar.gz
cd googletest-release-1.8.0
cmake -DBUILD_SHARED_LIBS=ON .
make

3. "Installieren" Sie die Header und Libs auf Ihrem System.

Dieser Schritt kann sich von Distribution zu Distribution unterscheiden, stellen Sie also sicher, dass Sie die Header und Bibliotheken in das richtige Verzeichnis kopieren. Ich habe dies erreicht, indem ich überprüft habe, wo sich frühere gtest-Bibliotheken von Debian befanden. Aber ich bin mir sicher, dass es dafür bessere Möglichkeiten gibt.

sudo cp -a googletest/include/gtest /usr/include
sudo cp -a googlemock/gtest/libgtest_main.so googlemock/gtest/libgtest.so /usr/lib/

# The easiest/best way:
make install  # Note: before v1.11 this can be dangerous and is not supported

4. Aktualisieren Sie den Cache des Linkers

... und prüfen, ob der GNU Linker die Bibliotheken kennt

sudo ldconfig -v | grep gtest

Wenn die Ausgabe so aussieht:

libgtest.so.0 -> libgtest.so.0.0.0
libgtest_main.so.0 -> libgtest_main.so.0.0.0

dann ist alles gut.

gTestframework ist jetzt einsatzbereit. Vergessen Sie nur nicht, Ihr Projekt mit der Bibliothek zu verknüpfen, indem Sie -lgtest setzen als Linker-Flag und optional, wenn Sie keine eigene Test-Hauptroutine geschrieben haben, die explizite -lgtest_main Flagge.

Von hier an möchten Sie vielleicht zur Google-Dokumentation und den alten Dokumenten über das Framework gehen, um zu erfahren, wie es funktioniert. Viel Spaß beim Programmieren!

Bearbeiten: Dies funktioniert auch für OS X! Siehe "So richten Sie googleTest unter OS X richtig ein"


Lassen Sie mich dies speziell für Ubuntu-Benutzer beantworten. Beginnen Sie zunächst mit der Installation des gtest-Entwicklungspakets.

sudo apt-get install libgtest-dev

Beachten Sie, dass dieses Paket nur Quelldateien installiert. Sie müssen den Code selbst kompilieren, um die erforderlichen Bibliotheksdateien zu erstellen. Diese Quelldateien sollten sich unter /usr/src/gtest befinden. Navigieren Sie zu diesem Ordner und verwenden Sie cmake, um die Bibliothek zu kompilieren:

sudo apt-get install cmake # install cmake
cd /usr/src/gtest
sudo mkdir build
cd build
sudo cmake ..
sudo make
sudo make install

Um nun Ihre Programme zu kompilieren, die gtest verwenden, müssen Sie es verknüpfen mit:

-lgtest -lgtest_main -lpthread

Dies funktionierte perfekt für mich unter Ubuntu 14.04LTS.


Linux
  1. So richten Sie Linux-Chroot-Jails ein

  2. So stellen oder ändern Sie die Zeitzone in Linux

  3. So initialisieren Sie eine gemeinsam genutzte Bibliothek unter Linux

  4. Wie wird die Versionierung einer gemeinsam genutzten Bibliothek unter Linux durchgeführt?

  5. So verzögern Sie das Laden einer gemeinsam genutzten Bibliothek unter Linux

So richten Sie die Torrent-Planung unter Linux ein

So legen Sie den Hostnamen unter Linux fest oder ändern ihn

So ändern oder setzen Sie das Benutzerkennwort in Linux

So installieren Sie die PyBrain-Python-Bibliothek unter Linux

So richten Sie eine Firewall mit GUFW unter Linux ein

So stellen Sie Datum und Uhrzeit unter Linux ein