С Новым годом! Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.54/13: Рейтинг темы: голосов - 13, средняя оценка - 4.54
 Аватар для Luzifer
6 / 6 / 3
Регистрация: 28.06.2010
Сообщений: 91

Как выполнить статическую линковку в cmake?

09.07.2017, 14:27. Показов 2590. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. Пробую собрать проект с помощью cmake (3.0) на ubuntu.
Мне надо, чтобы зависимости были зашиты в исполняемый файл (static linking).

Использую следующий CMakeLists.txt:

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
31
32
33
34
35
cmake_minimum_required(VERSION 3.0)
project(TestProject)
 
set(CMAKE_CXX_STANDARD 14)
 
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -static")
 
file(COPY resources DESTINATION .)
 
set(TEST_PROJECT_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/include")
set(TEST_PROJECT_SOURCES_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/sources/*.cpp")
 
include_directories(${TEST_PROJECT_INCLUDE_DIRS})
file(GLOB_RECURSE TEST_PROJECT_SOURCE_FILES ${TEST_PROJECT_SOURCES_DIRS})
 
find_package(PkgConfig REQUIRED)
pkg_check_modules(GL REQUIRED gl)
include_directories(${GL_INCLUDE_DIRS})
 
find_package(PkgConfig REQUIRED)
pkg_check_modules(GLEW REQUIRED glew)
include_directories(${GLEW_INCLUDE_DIRS})
 
find_package(PkgConfig REQUIRED)
pkg_check_modules(GLFW REQUIRED glfw3)
include_directories(${GLFW_INCLUDE_DIRS})
 
add_executable(testproject ${TEST_PROJECT_SOURCE_FILES})
 
target_link_libraries(
    testproject
    ${GL_LIBRARIES}
    ${GLEW_LIBRARIES}
    ${GLFW_LIBRARIES}
)
В результате получаю ошибки:

Code
1
2
3
4
5
6
7
/usr/bin/ld: cannot find -lGL
/usr/bin/ld: cannot find -lGLEW
/usr/bin/ld: cannot find -lGL
/usr/bin/ld: cannot find -lglfw
/usr/bin/ld: cannot find -lGLEW
/usr/bin/ld: cannot find -lglfw
collect2: error: ld returned 1 exit status
Подскажите пожалуйста, как решить эту проблему?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.07.2017, 14:27
Ответы с готовыми решениями:

Как выполнить статическую линковку библиотек?
Такая ситуация: скомпилировал на ноуте консольное приложение, на уровне хеллоу ворлда, а на персональном компе оно при запуске выдает...

Как собрать статическую линковку ILMerge?
C# Скинте как собрать статистическую линковку ILMerge смотрел видео https://www.youtube.com/watch?v=wNIKhWaJ9Mo понял так вот...

Как OpenSSL добавить в линковку CLion (используется cmake и mingw)
Приветствую, друзья. Как добавить OpenSSL в линковку проекта? Я видел FingOpenSSL (cmake), но ничего не понятно, что с этим сделать. Прошу...

6
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
09.07.2017, 17:52
Цитата Сообщение от Luzifer Посмотреть сообщение
Подскажите пожалуйста, как решить эту проблему?
А у Вас есть статические версии этих библиотек?
Да и вообще, хоть какие-то их версии.
0
 Аватар для Luzifer
6 / 6 / 3
Регистрация: 28.06.2010
Сообщений: 91
09.07.2017, 20:53  [ТС]
Как можно это проверить?

п.с. если убрать флаг -static, то проект собирается без проблем.
0
Заблокирован
09.07.2017, 21:02
Luzifer, как ты себе представляешь статическую линковку с libGL? libGL, грубо говоря, предоставляется вендором видеокарты.
0
Псевдослучайный
1946 / 1146 / 98
Регистрация: 13.09.2011
Сообщений: 3,215
09.07.2017, 21:07
Как минимум libGL ведороспецифична и завязана на драйвера, статическая версия может быть разве что с софтварным рендером.
Цитата Сообщение от Luzifer Посмотреть сообщение
Как можно это проверить?
Bash
1
locate lib{GLEW,glfw}.a
0
Неэпический
 Аватар для Croessmah
18144 / 10728 / 2066
Регистрация: 27.09.2012
Сообщений: 27,026
Записей в блоге: 1
10.07.2017, 00:51
Что именно Вы хотите слинковать статически?
0
 Аватар для Luzifer
6 / 6 / 3
Регистрация: 28.06.2010
Сообщений: 91
10.07.2017, 01:21  [ТС]
Мне надо, чтобы приложение запускалось на ОС без установленных библиотек нужных приложению. Иными словами, чтобы зависимости (если это возможно) были частью приложения.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.07.2017, 01:21
Помогаю со студенческими работами здесь

Настроить Builder на статическую линковку
У меня Builder 2007, если попытаться открыть exe файл на другом пк то жалуется на отсутствие vcl100bpl.bpl, те на борландовскую vcl...

Не получается сделать статическую линковку своей программы в MinGW
Написал на с++ программу, скомпилировал и решил дать другу потестить. Хотел слинковать статически при помощи ключа '-static', но...

Собрать статическую библиотеку для XLNT c Cmake
Здравствуйте, Я знаю, что это повтор моей же темы, но в той теме я так к сожалению и не смог вообще ничего понять :( :( Прошу понять...

хочу хитрую линковку сделать, как сдалать
noindex - гуглу пофиг вот и встал вопрос , а как тогда ? Спасибо!

Сборка проекта cmake с вложенными cmake
Всем привет. Подскажите пожалуйста вот у меня есть проектный файл и в нем мне надо как то обьявить указание на хранилища с другими...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru