Ошибка установки gcl Eclpse CDT: не удается найти -lgtest

Я следую за этим постом

настроить gtest 1.7 на eclipse cdt 8.2.1. но получил следующие ошибки:

....test/AllTests.bc src/Test.bc -lgmock -lgtest -lpthread -lstdc++ 
/usr/bin/ld: cannot find -lgmock
/usr/bin/ld: cannot find -lgtest
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Info: Parallel threads used: 3

Кстати, есть некоторые изменения с gtest 1.5 до 1.7, я на самом деле делаю ссылку так:

   sudo ln -s lib/.libs/libgtest.a /usr/lib/libgtest.a

Как видите,libgtest находится в gtest1.7/lib/.lib(второй скрытый каталог), а не в gtest1.7/lib. так что я сделал не так?

1 ответ

Решение

Вы, кажется, пытались сделать символические ссылки на libgtest.aа также libgmock.a с помощью команд:

sudo ln -s lib/.libs/libgtest.a /usr/lib/libgtest.a
sudo ln -s lib/.libs/libgmock.a /usr/lib/libgmock.a

из консоли в /your/path/to/gtest-1.7.0 а также /your/path/to/gmock-1.7.0соответственно.

Если вы откроете /usr/lib в вашем файловом менеджере найдите ссылки libgtest.aа также libgmock.a и проверить их свойства, я думаю, вы обнаружите, что эти ссылки не работают, и именно поэтому компоновщик не может найти их в вашем проекте. Ваш ln Команды дают относительные пути к своим целям, но необходимы абсолютные пути.

Если это так, удалите неработающие ссылки и воссоздайте их с помощью команд:

sudo ln -s /full/path/to/gtest-1.7.0/lib/.libs/libgtest.a /usr/lib/libgtest.a
sudo ln -s /full/path/to/mock-1.7.0/lib/.libs/libgmock.a /usr/lib/libgmock.a

Например, в моей системе /full/path/to/ знак равно /home/imk/develop/

Тогда я думаю, что ваша сборка будет работать.

Тем не менее, создание этих символических ссылок в /usr/lib слегка портит вашу систему установки. Было бы лучше создать их в /usr/local/lib, Или даже проще, вы можете просто добавить эти статические библиотеки в объектные файлы для связи вашего проекта:

  • В Eclipse перейдите в свой проект -> Свойства -> Сборка C/C++-> Настройки -> Компоновщиккомпилятора -> Библиотеки и удалите gmock.a, gtest.a

  • Сразу под библиотеками вы найдете Разное. Там, вДругие объекты, добавьте:

    /full/path/to/libgtest.a

    /full/path/to/libgmock.a

Все эти предложения сработали для меня.

Другие вопросы по тегам