Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 27.02.2021
Сообщений: 3

Добавление статической библиотеки czmq в cmake

27.02.2021, 03:43. Показов 1730. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пишу проект на Си с использованием библиотеки ZeroMQ. Библиотеку нужно использовать статическую. Прикладываю CMakeLists.txt:
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
cmake_minimum_required(VERSION 3.17)
project(client C CXX)
 
set(CMAKE_C_STANDARD 99)
 
find_library(czmq_location NAMES libczmq.a)
message(STATUS ${czmq_location})
 
add_library(czmq STATIC IMPORTED)
set_target_properties(czmq PROPERTIES IMPORTED_LOCATION ${czmq_location})
 
add_executable(client client.c ft_lib_c/clib.c ft_lib_c/clib.h ft_lib_c/itoa.c ft_lib_c/itoa.h)
 
target_link_libraries(client czmq  )
Однако при сборке получаю много ошибок из разряда:
Code
1
2
3
4
5
CMakeFiles/client.dir/client.c.o: In function `main':
/home/neleps/MMS_radar_projects/master/client/client.c:18: undefined reference to `zmq_ctx_new'
/home/neleps/MMS_radar_projects/master/client/client.c:20: undefined reference to `zmq_socket'
/home/neleps/MMS_radar_projects/master/client/client.c:22: undefined reference to `zmq_connect'
....
Т.е. функции из библиотеки не видны . Что я делаю не так?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
27.02.2021, 03:43
Ответы с готовыми решениями:

Добавление статической библиотеки в проект
Пользуюсь этим мануалом http://msdn.microsoft.com/ru-ru/library/ms235627.aspx Выполняя второй пункт, нажимаю add new Reference,...

DLL библиотеки в CMAKE
Собираю проект,стокнулся с проблемой,не могу найти информацию куда необходимо помещать динамические библиотеки Я так понимаю я должен...

подключение библиотеки CMake
Как подключить к проекту стороннюю библиотеку в CMake? find_library, find_package не помогают... есть папка в проекте extlibs в...

7
13 / 13 / 0
Регистрация: 21.10.2011
Сообщений: 58
27.02.2021, 10:55
Можете показать строку компиляции? Он точно нашел либу libczmq.a?
0
0 / 0 / 0
Регистрация: 27.02.2021
Сообщений: 3
27.02.2021, 11:48  [ТС]
Вроде как нашел. Прикрепляю полный текст результатов сборки:
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
/snap/clion/139/bin/cmake/linux/bin/cmake --build /home/neleps/MMS_radar_projects/master/iakimenko-grigorii/client/cmake-build-debug --target client -- -j 9
-- /usr/lib/x86_64-linux-gnu/libczmq.a
-- Configuring done
-- Generating done
-- Build files have been written to: /home/neleps/MMS_radar_projects/master/iakimenko-grigorii/client/cmake-build-debug
[ 25%] Linking C executable client
CMakeFiles/client.dir/client.c.o: In function `main':
/home/neleps/MMS_radar_projects/master/iakimenko-grigorii/client/client.c:18: undefined reference to `zmq_ctx_new'
/home/neleps/MMS_radar_projects/master/iakimenko-grigorii/client/client.c:20: undefined reference to `zmq_socket'
/home/neleps/MMS_radar_projects/master/iakimenko-grigorii/client/client.c:22: undefined reference to `zmq_connect'
/home/neleps/MMS_radar_projects/master/iakimenko-grigorii/client/client.c:62: undefined reference to `zmq_close'
/home/neleps/MMS_radar_projects/master/iakimenko-grigorii/client/client.c:63: undefined reference to `zmq_ctx_destroy'
CMakeFiles/client.dir/ft_lib_c/clib.c.o: In function `upload_data':
/home/neleps/MMS_radar_projects/master/iakimenko-grigorii/client/ft_lib_c/clib.c:26: undefined reference to `zmq_send'
/home/neleps/MMS_radar_projects/master/iakimenko-grigorii/client/ft_lib_c/clib.c:27: undefined reference to `zmq_recv'
CMakeFiles/client.dir/ft_lib_c/clib.c.o: In function `reupload_file':
/home/neleps/MMS_radar_projects/master/iakimenko-grigorii/client/ft_lib_c/clib.c:179: undefined reference to `zmq_send'
/home/neleps/MMS_radar_projects/master/iakimenko-grigorii/client/ft_lib_c/clib.c:180: undefined reference to `zmq_recv'
CMakeFiles/client.dir/ft_lib_c/clib.c.o: In function `upload_file':
/home/neleps/MMS_radar_projects/master/iakimenko-grigorii/client/ft_lib_c/clib.c:218: undefined reference to `zmq_send'
/home/neleps/MMS_radar_projects/master/iakimenko-grigorii/client/ft_lib_c/clib.c:219: undefined reference to `zmq_recv'
collect2: error: ld returned 1 exit status
CMakeFiles/client.dir/build.make:136: recipe for target 'client' failed
make[3]: *** [client] Error 1
CMakeFiles/Makefile2:95: recipe for target 'CMakeFiles/client.dir/all' failed
make[2]: *** [CMakeFiles/client.dir/all] Error 2
CMakeFiles/Makefile2:102: recipe for target 'CMakeFiles/client.dir/rule' failed
make[1]: *** [CMakeFiles/client.dir/rule] Error 2
Makefile:138: recipe for target 'client' failed
make: *** [client] Error 2
0
13 / 13 / 0
Регистрация: 21.10.2011
Сообщений: 58
27.02.2021, 12:59
покажите вывод команды

Bash
1
readelf /usr/lib/x86_64-linux-gnu/libczmq.a -s | grep zmq_ctx_new
0
0 / 0 / 0
Регистрация: 27.02.2021
Сообщений: 3
27.02.2021, 14:53  [ТС]
Получил следующее:
Code
1
755: 0000000000000000     0 NOTYPE  GLOBAL DEFAULT  UND zmq_ctx_new
Как я понял, это значит, что такой функции в этой библиотеке попросту нет, это уже решает несколько вопросов, большое спасибо
Нужные функции как оказалось содержатся в библиотеке libzmq.a. Правда возникла проблема - написаны они на C++, и в связи с этим статически линковаться тоже отказались, засыпав меня "undefined reference to..." (хотя библиотека позиционирует себя как решение для C/C++). Если использовать динамическую библиотеку никаких проблем не возникает, однако это к сожалению не мой вариант.
Таким образом, слинковать статическую библиотеку получится только с проектом, написанном на C++, верно? Вопрос может быть очень глупым, но всё же я его решил задать, тк в этих вещах являюсь новичком.
0
13 / 13 / 0
Регистрация: 21.10.2011
Сообщений: 58
27.02.2021, 17:40
Цитата Сообщение от neleps Посмотреть сообщение
Как я понял, это значит, что такой функции в этой библиотеке попросту нет
да нет, это говорит, что эти символы (функции) там есть.

Вообще что касается подключения кода C++ в код Си, это возможно нужно создать хедер с оператором extern "C" {}, где описать прототипы требуемых функций, тогда он сможет слинковать
0
Модератор
Эксперт Java
 Аватар для alecss131
2881 / 1387 / 411
Регистрация: 11.08.2017
Сообщений: 4,427
Записей в блоге: 2
27.02.2021, 21:09
Цитата Сообщение от fish9370 Посмотреть сообщение
что касается подключения кода C++ в код Си, это возможно нужно создать хедер с оператором extern "C" {}
Это работает только в другую сторону, то есть при подключении сишного кода в плюсы.
0
13 / 13 / 0
Регистрация: 21.10.2011
Сообщений: 58
27.02.2021, 22:20
Цитата Сообщение от alecss131 Посмотреть сообщение
Это работает только в другую сторону, то есть при подключении сишного кода в плюсы
это работает в обе стороны
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
27.02.2021, 22:20
Помогаю со студенческими работами здесь

Cmake: сборка библиотеки c++
Подскажите как собрать библиотеку с помощью CMAKE, чтобы: 1. Взять с git репозитория исходники библиотеки 2. Запустить cmake, который...

Подключение статической библиотеки
Создаю CLR->Windows Forms Application в Visual Studio 2005 Необходимо использовать старый код из обычного С++, в идеале хотелось бы...

Создание статической библиотеки на Си
Задан массив некоторых целых чисел в упакованном формате. Выполнить его распаковку, если известно количество битов, отводимых для одного...

Подключение статической библиотеки в VS
Скачал проект, он использует x.lib. В свойствах проекта, в разделе Linker, поле Additional Library прописан путь к библиотекам. Но нигде...

Создание статической библиотеки
Здравствуйте, подскажите плиз что я не так делаю. Есть три файлика, с расширением .с func1.c : int f1() ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Контроль заполнения и очистка дат в зависимости от значения перечислений
Maks 12.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: реализовать контроль корректности заполнения дат назначения. . .
Архитектура слоя интернета для сервера-слоя.
Hrethgir 11.04.2026
В продолжение https:/ / www. cyberforum. ru/ blogs/ 223907/ 10860. html Знаешь что я подумал? Раз мы все источники пишем в голове ветки, то ничего не мешает добавить в голову такой источник, который сам. . .
Подстановка значения реквизита справочника в табличную часть документа
Maks 10.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеПерсонала", разработанного в конфигурации КА2. Задача: при выборе сотрудника (справочник Сотрудники) в ТЧ документа. . .
Очистка реквизитов документа при копировании
Maks 09.04.2026
Алгоритм из решения ниже применим как для типовых, так и для нетиповых документов на самых различных конфигурациях. Задача: при копировании документа очищать определенные реквизиты и табличную. . .
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru