LINUX.ORG.RU

Cmake Errors

 ,


0

2
Determining if the pthread_create exist failed with the following output:
CheckSymbolExists.c: undefined reference to 'pthread_create'

/usr/bin/ld: cannot find -lpthreads

Поставил Cmake с ним же установился gcc 4.9, в комплект добавил g++ 4.9.

Ответ на: комментарий от xaizek

Проект не мой, искал в CMakeLists.txt, но ничего про pthread там нету, а папка где он предположительно возникает появляется во время компиляции cmake-build

GreenCat
() автор топика
Ответ на: комментарий от GreenCat

Я о cmake тоже знаю мало что, но библиотека называется именно libpthread. CMakeLists.txt может быть не один и ещё там всякие модули есть. Лучше делать grep по всему проекту на предмет «pthreads».

xaizek ★★★★★
()

Наск. я понимаю по фен-шую надобно сделать

find_package(Threads)
а потом слинковаться с таргетом Threads::Threads. Это впрочем не поможет от останова, если некто захардкодил к чёртовой бабушке ключи в сборочной системе. Выскажем ему своё "фи".

d_a ★★★★★
()
Ответ на: комментарий от d_a

Это водить в CmakeLists? Кстати при сборки в терминале пишет о том что pthread - not found, хотя я вроде как установил пакеты

GreenCat
() автор топика
Ответ на: комментарий от GreenCat

Ну да, это и target_link_libraries(... Threads::Threads). И pthread очевидно, не должно быть not found, так что не нашлося.

d_a ★★★★★
()
Последнее исправление: d_a (всего исправлений: 1)
find_package(Threads REQUIRED)
…
target_link_libraries(YOURTARGET ${CMAKE_THREAD_LIBS_INIT})

И вообще, показал бы свой CMakeLists.txt, а то неприлично даже

XMs ★★★★★
()
Последнее исправление: XMs (всего исправлений: 1)
Ответ на: комментарий от EXL

Ну вот поэтому и. Я правда не знаю как cmake дружит с clang.

d_a ★★★★★
()
Ответ на: комментарий от XMs

Я поиском проверил ход сборки ниодной ошибки только warnings имеются, но я раньше было дело собирал как то, на конце выдаёт Makefile:117:repice for target 'all' failed make: *** [all] Error 2

GreenCat
() автор топика
Ответ на: комментарий от GreenCat

Молодец. А теперь выложи полный лог

XMs ★★★★★
()
Ответ на: комментарий от GreenCat

Выхлоп в консоль — это и есть лог. Всё, что будет выведено на экран, надо выложить сюда, от запуска make вплоть до приглашения командного интерпретатора

XMs ★★★★★
()
Ответ на: комментарий от d_a

этот феншуй и твое «фи» не спасет от «других программистов у нас для вас нЭтъ!»

slackwarrior ★★★★★
()
Ответ на: комментарий от XMs

пакет с pthreads. Как он называется в дебиане, я не знаю

В Debian он называется libc6-dev.

i-rinat ★★★★★
()
Ответ на: комментарий от xaizek

Должно быть -lpthread (без «s» на конце).

Должно быть -pthread. Эта опция линкует libpthread.so, когда нужно. А ещё она устанавливает не-помню-какой макрос, который немного меняет способ работы с libc, делая её более потоко-безопасной. Можно, конечно, -lpthread и тот макрос всегда определять, но это внутреннее дело связки компилятора и libc. Пусть они там сами между собой разбираются.

i-rinat ★★★★★
()
Ответ на: комментарий от GreenCat

Можешь перенаправить вывод в файл следующим образом:

make > filename.log

XMs ★★★★★
()
Ответ на: комментарий от GreenCat

Консоль все показать не хочет у неё лимит, как его поднять?

Зависит от эмулятора терминала.

Можно обойти, завернув весь вывод в файл:

cmake ...параметры-cmake...  > log.txt 2>&1

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

cmake ...параметры-cmake... > log.txt 2>&1

Поправка: вызов cmake в чём-то аналогичен вызову configure, поэтому для лога именно сборки нужно запускать не cmake, а make

XMs ★★★★★
()
Ответ на: комментарий от GreenCat

Ты сюда-то лог скинешь? Или проблема решена? Если да, то пометь тему как решённую

XMs ★★★★★
()
Ответ на: комментарий от XMs

поэтому для лога именно сборки нужно запускать не cmake, а make

Ну как бы да, но если посмотреть на заглавное сообщение, можно увидеть упоминание «CheckSymbolExists.c». Такой файл создаёт один из штатных модулей CMake, чтобы проверить, существует ли символ. Поэтому я думаю, что у него конфигурация не завершается успешно. Скорее всего, там ещё нет Makefile, поэтому нет смысла запускать make.

i-rinat ★★★★★
()
Ответ на: комментарий от i-rinat

CheckSymbolExists.c
Такой файл создаёт один из штатных модулей CMake, чтобы проверить, существует ли символ

А, вот оно что. Я подумал, что это один из файлов проекта ТС-а

XMs ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.