Я успешно связал свой простой тест gtest с командой g ++ -o build / test1 build / test1.o -pthread -lgtest -lgtest_main
, но я ios об опциях - потоковый. Почему он не работает с -lpthread, так как он работает с -lgtest.
Порядок параметров ссылок библиотеки в командной строке имеет большое значение. Я полагаю, что вы попытались просто изменить -pthread
на -lpthread
, чтобы получить это:
g++ -o build/test1 build/test1.o -lpthread -lgtest -lgtest_main
Но если библиотека gtest или gtest_main использует какие-либо функции pthreads, тогда должен появиться -lpthread
позже в списке библиотек, чем те (библиотеки могут быть перечислены более одного раза, если необходимо):
g++ -o build/test1 build/test1.o -lgtest -lgtest_main -lpthread
Хотя это не подходящий способ для построения кода pthreads с помощью g++
(как описано в вашем другом ответе) обычно это работает.
И почему -gest doest не работает, но -pthread без "l" работает ...
-pthread
- это конкретный c параметр компиляции, распознаваемый набором компиляторов G CC. -lgtest
- это сочетание общего -l
параметра с gtest
в качестве аргумента параметра. Можно также написать аналогичный параметр -lpthread
, который, в принципе, имеет несколько иное значение, чем -pthread
.