Форум программистов, компьютерный форум, киберфорум
C++ Qt
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.60/726: Рейтинг темы: голосов - 726, средняя оценка - 4.60
 Аватар для gromo
383 / 281 / 31
Регистрация: 04.09.2009
Сообщений: 1,225

GNU/Linux Qt5.* - Линкуем статически

23.01.2014, 19:10. Показов 143495. Ответов 62
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В связи с отсутствием в данной теме мануала по статической линковке приложений Qt, решил исправить данный недостаток
Оговорюсь сразу: приветствуется беспощадная критика, особенно, что касается скриптов)
Итак:
1) Как обычно, нужно пересобрать фреймвор статически. Для этого скачиваем архив с исходными текстами отсюда: http://qt-project.org/downloads
На данный момент имя тар-бола - qt-everywhere-opensource-src-5.2.0.tar.gz

2) Переходим в каталог с тар-болом. Разархивируем и распаковываем. Потом нужно сконфигурировать, собрать и установить тонну исходников. Делаем это так ( за дополнительными параметрами, если нужно, обращайтесь ./configure --help):
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
tar -xzvf qt-everywhere-opensource-src-5.2.0.tar.gz && cd qt-everywhere-opensource-src-5.2.0 \
&& sudo mkdir -p /usr/lib/Qt5_static && ./configure -platform linux-g++ \
-release \
-static \
-fontconfig \
-opensource \
-confirm-license \
-nomake examples \
-c++11 \
-nomake tests \
-qt-zlib \
-qt-libpng \
-qt-libjpeg \
-prefix /usr/local/Qt5_static \
&& make -j3 && make install
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Объяснение опций:
-platform linux-g++ \ # Ваша платформа и компилятор
-release \ # Собираем для релиза
-static \ # Собственно, наша цель собрать статически
-fontconfig \ # Поддержка собственного fontconfig
-opensource \ # СПО версия
-confirm-license \ # Сразу согласиться с лицензией
-nomake examples \ # Не собирать учебные примеры
-c++11 \ # Поддержка последнего стандарта
-nomake tests \ # Не проводить тесты
-qt-zlib \ # Внедрение собственной библиотеки <libname>
-qt-libpng \ # ...
-qt-libjpeg \ # ...
-prefix /usr/local/Qt5_static \ # Относительно этого пути будет производиться установка (можете свой указать)
make -j3 # количество ядер процессора +1
3) Так, теперь у нас есть все необходимые инструменты (почти )
Заходим в QtCreator, Tools > Options > Build & Run > Qt Versions
Добавляем путь к новому qmake ( в нашем случае /usr/local/Qt5_static/bin/qmake ).
Затем идем на вкладку Kits и добавляем новый набор инструментов, только укзываем ему qmake, только что добавленный на предыдущем шаге. Озаглавим этот набор Qt5_staticKit, например. Нажимаем Ok.
4) Ctrl+5, выбираем вверху проект, который мы хотим собрать статически, и щелкаем по новому Kit'y Qt5_staticKit. Выбираем Release конфигурацию. Тааак, здесь пока все.
5) Перелазим в .pro file. Добавляем туда
Code
1
2
3
QMAKE_LFLAGS += -s # Убрать все таблицы символов из результирующего бинарника ( man gcc )
# 3-rd party библиотеки, (boost, gmp, ... ) если есть статический вариант добавляем так:
LIBS += -Wl, -Bstatic, -lboost_regex, -lgmp, -lgmpxx, -Bdynamic
Теперь все Qt и 3-rd party библиотеки сидят в бинарнике, НО дело еще не закончено.
Если посмотреть на вывод ldd, то можно увидеть, что приложение зависит еще от целой кучи не Qt-ных библиотек. Они могут быть бинарно-несовместимыми со своими предыдущими версиями (особенно, если написаны на С++) даже если они имеются на чужом компьютере.
Например:
Кликните здесь для просмотра всего текста
Bash
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
ldd traditional
        linux-vdso.so.1 (0x00007fffd05fe000)
        libgobject-2.0.so.0 => lib/libgobject-2.0.so.0 (0x00007fe1a298a000)
        libX11-xcb.so.1 => lib/libX11-xcb.so.1 (0x00007fe1a2788000)
        libXi.so.6 => lib/libXi.so.6 (0x00007fe1a2578000)
        libxcb-render-util.so.0 => lib/libxcb-render-util.so.0 (0x00007fe1a2375000)
        libSM.so.6 => lib/libSM.so.6 (0x00007fe1a216d000)
        libICE.so.6 => lib/libICE.so.6 (0x00007fe1a1f51000)
        libxcb-glx.so.0 => lib/libxcb-glx.so.0 (0x00007fe1a1d39000)
        libxcb-render.so.0 => lib/libxcb-render.so.0 (0x00007fe1a1b2f000)
        libxcb-keysyms.so.1 => lib/libxcb-keysyms.so.1 (0x00007fe1a192d000)
        libdbus-1.so.3 => lib/libdbus-1.so.3 (0x00007fe1a16e5000)
        libxcb.so.1 => lib/libxcb.so.1 (0x00007fe1a14c5000)
        libxcb-image.so.0 => lib/libxcb-image.so.0 (0x00007fe1a12c1000)
        libxcb-icccm.so.4 => lib/libxcb-icccm.so.4 (0x00007fe1a10bd000)
        libxcb-sync.so.1 => lib/libxcb-sync.so.1 (0x00007fe1a0eb7000)
        libxcb-xfixes.so.0 => lib/libxcb-xfixes.so.0 (0x00007fe1a0cb0000)
        libxcb-shm.so.0 => lib/libxcb-shm.so.0 (0x00007fe1a0aad000)
        libxcb-randr.so.0 => lib/libxcb-randr.so.0 (0x00007fe1a089f000)
        libxcb-shape.so.0 => lib/libxcb-shape.so.0 (0x00007fe1a069b000)
        libxcb-xkb.so.1 => lib/libxcb-xkb.so.1 (0x00007fe1a0480000)
        libxkbcommon.so.0 => lib/libxkbcommon.so.0 (0x00007fe1a0220000)
        libfontconfig.so.1 => lib/libfontconfig.so.1 (0x00007fe19ffe4000)
        libfreetype.so.6 => lib/libfreetype.so.6 (0x00007fe19fd3f000)
        libXrender.so.1 => lib/libXrender.so.1 (0x00007fe19fb35000)
        libXext.so.6 => lib/libXext.so.6 (0x00007fe19f923000)
        libX11.so.6 => lib/libX11.so.6 (0x00007fe19f5e8000)
        libudev.so.1 => lib/libudev.so.1 (0x00007fe19f3d6000)
        libicui18n.so.52 => lib/libicui18n.so.52 (0x00007fe19efce000)
        libicuuc.so.52 => lib/libicuuc.so.52 (0x00007fe19ec55000)
        libpcre16.so.0 => lib/libpcre16.so.0 (0x00007fe19e9f6000)
        libdl.so.2 => lib/libdl.so.2 (0x00007fe19e7f2000)
        libgthread-2.0.so.0 => lib/libgthread-2.0.so.0 (0x00007fe19e5f0000)
        libglib-2.0.so.0 => lib/libglib-2.0.so.0 (0x00007fe19e2f0000)
        librt.so.1 => lib/librt.so.1 (0x00007fe19e0e8000)
        libGL.so.1 => lib/libGL.so.1 (0x00007fe19ddb5000)
        libpthread.so.0 => lib/libpthread.so.0 (0x00007fe19db98000)
        libstdc++.so.6 => lib/libstdc++.so.6 (0x00007fe19d894000)
        libm.so.6 => lib/libm.so.6 (0x00007fe19d591000)
        libgcc_s.so.1 => lib/libgcc_s.so.1 (0x00007fe19d37b000)
        libc.so.6 => lib/libc.so.6 (0x00007fe19cfd1000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fe1a2bdb000)
        libpcre.so.1 => lib/libpcre.so.1 (0x00007fe19cd6a000)
        libffi.so.6 => lib/libffi.so.6 (0x00007fe19cb62000)
        libuuid.so.1 => lib/libuuid.so.1 (0x00007fe19c95d000)
        libXau.so.6 => lib/libXau.so.6 (0x00007fe19c759000)
        libXdmcp.so.6 => lib/libXdmcp.so.6 (0x00007fe19c553000)
        libxcb-util.so.1 => lib/libxcb-util.so.1 (0x00007fe19c34e000)
        libexpat.so.1 => lib/libexpat.so.1 (0x00007fe19c124000)
        libz.so.1 => lib/libz.so.1 (0x00007fe19bf0e000)
        libbz2.so.1.0 => lib/libbz2.so.1.0 (0x00007fe19bcfe000)
        libpng16.so.16 => lib/libpng16.so.16 (0x00007fe19bac9000)
        libicudata.so.52 => lib/libicudata.so.52 (0x00007fe19a25e000)
        libnvidia-tls.so.331.38 => lib/libnvidia-tls.so.331.38 (0x00007fe19a05b000)
        libnvidia-glcore.so.331.38 => lib/libnvidia-glcore.so.331.38 (0x00007fe19784d000)

Пересобирать каждую из них, в случае, когда нет статической, довольно проблематично и долго и не всегда возможно ( кто хочет пусть попробует ), поэтому есть вариант поставлять их вместе со своим приложением. Большая вероятность того, что большинство этих библиотек будут на чужой машине, но выполнив еще немного действий, вы застрахуете и себя, и пользователя от лишней головной боли.
Вот что делаем:
1) Нужно скопировать симлинк, который выводит ldd, и библиотеку на которую он указывает в каталог с нашим приложением. ( в нашем случае /path/to/app/lib ). Симлинк использует динамический загрузчик при загрузке библиотеки для приложения во время выполнения, ну а библиотека, на которую он указывает это собственно данные.

Вот наваял такой скрипт (еще раз напомню, что правки и улучшения очень приветствуются c башем знаком 2 дня )

Bash
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
#!/bin/sh
LIB_DIR=lib/
SONAME_LIST=soname.lst
 
if [ "$#" -lt 1 ]; then
    echo "Usage: ./$(basename ${0}) < executable >"
    exit 1;
fi
 
# slc.c: На входе - вывод ldd, на выходе - имена symlink'ов, для динамич. загрузчика
cat<<'EOF' > slc.c
    #include <stdio.h>
    #include <stdlib.h>
    #include <ctype.h>
    #include <locale.h>
    #include <string.h>
 
    #define MAX_LENGTH 256
    #define LINE_CNT 200
    int first_nonspace(const char *s) {
    for(size_t i=0; *s; ++i, ++s)
        if( !isspace(*s) )
        return i;
    return -1; // Нет значимых символов
    }
    int main() {
    setlocale(LC_ALL, "C");
    char** lines = malloc( LINE_CNT * sizeof(char*) );
    for(int i=0; i < LINE_CNT; ++i)
        lines[i] = malloc( MAX_LENGTH * sizeof(char) );
    char  line[MAX_LENGTH];
    size_t currLineNumb = 0;
 
    while( fgets(line, MAX_LENGTH, stdin) != NULL && currLineNumb < LINE_CNT) {
        int fns = first_nonspace(line);
        if(fns == -1)
        continue;
        else {
        char lib_prefix[4] = {'\0',}; // "lib" + '\0'
        strncpy(lib_prefix, line+fns, 3);
        lib_prefix[3] = '\0';
        if( !strcmp(lib_prefix, "lib")) // Если имя начинается с 'lib',
            strcpy(lines[currLineNumb++], line+fns); // сохраняем эту строчку
        }
    }
    // Выводим сохраненную строчку до первого пробела,
    // что и будет составлять наш soname.
    for(size_t i=0; i < currLineNumb; ++i)
        printf("%.*s\n", (int)(strchr(lines[i], ' ') - lines[i]), lines[i]);
    for(int i=0; i < LINE_CNT; ++i) free(lines[i]);
    free(lines);
    return 0;
    }
EOF
cc -std=c99 slc.c -o slc
mkdir -p ${LIB_DIR}
ldd $1 | ./slc > $SONAME_LIST
for name in `cat $SONAME_LIST`; do
    libname=$(readlink /usr/lib/$name)   # Получим имя библиотеки
    cp /usr/lib/${libname} -t $LIB_DIR;    # Копируем библиотеку
    cp -P /usr/lib/${name} -t $LIB_DIR;    # Копируем симлинк, нужный для ldd
done
 
# Чистимся
rm -f ${SONAME_LIST} slc{,.c}
exit 0;
Сохраняем это под именем, например, s.sh, и ложим в каталог с исполняемым файлом приложения.
Выполняем:
Bash
1
chmod +x s.sh && ./s.sh name_of_the_executable
В текущем каталоге появится каталог ./lib/ , в котором будут лежать все необходимые ссылки и библиотеки.
Последний штрих: в .pro файл нужно добавить -rpath опцию линковщику, чтобы загрузчик потом знал, что поставляемые нами вместе с приложением библиотеки лежат в папке lib/ (в данном случае):
Code
1
LIBS += -Wl,-rpath lib/
Теперь все это дело в .tar.gz и можете делиться с друзьями своим приложением

Как из этого сделать программный пакет, смотрите документацию к своему дистрибутиву GNU/Linux.

Ps. На MacOS процедура практически не должна отличаться, но у меня нет возможности проверить.
Pss. Если ваше приложени базируется на плагинах, то они по своей природе не могут линковаться статически..
Смотрите документацию http://qt-project.org/doc/qt-4... t-x11.html и все вытекающие перекрестные ссылки по плагинам.
________________________________________ ________________________________________ ___________________________
Вроди бы ничего не забыл...
Надеюсь, статейка кому-нибудь поможет разобраться.
Спасибо и удачи
6
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.01.2014, 19:10
Ответы с готовыми решениями:

Timestamp->QdateTime (Qt5+Firebird+Linux)
Направьте на путь истинный. В исходниках Qt5 есть небольшой пример, sqlbrowser. И есть база FB. Всё коннектится и показывается. Но есть...

Qt5 перенос приложения из windows7 в linux (Raspbery)
Добрый вечер! Извиняюсь, не так давно знаком с Qt и линукс, нужна помощь. Задача стоит разработать приложение для микрокомпьютера...

Удаление GNU\Linux из автозагрузки Kali Linux x64
Здравствуйте. Установил криво Kali Linux на диск С. Потом удалил все его файлы. Но в автозагрузке Linux Осталась не могу удалить. И можно...

62
 Аватар для RazrFalcon
1403 / 1260 / 262
Регистрация: 10.11.2013
Сообщений: 3,763
14.01.2015, 16:52
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от KOSHAK_ Посмотреть сообщение
А версию Qt можно оставить прежней?
Да. Скорее всего проблем не будет.
0
 Аватар для KOSHAK_
114 / 3 / 0
Регистрация: 16.11.2011
Сообщений: 162
14.01.2015, 16:54
Спасибо, пошел качать образ. В пятницу продолжу мучения
0
 Аватар для KOSHAK_
114 / 3 / 0
Регистрация: 16.11.2011
Сообщений: 162
16.01.2015, 17:05
Блин, на старой Ubuntu Qt Creator 1.3.1. он отказывается работать с Qt 5.3.2. Можно поставить туда новый Qt Creator?
0
 Аватар для RazrFalcon
1403 / 1260 / 262
Регистрация: 10.11.2013
Сообщений: 3,763
16.01.2015, 17:14
Цитата Сообщение от KOSHAK_ Посмотреть сообщение
Можно поставить туда новый Qt Creator?
Да. А зачем он вам вообще? Qt собирается через консоль на раз-два.
0
 Аватар для KOSHAK_
114 / 3 / 0
Регистрация: 16.11.2011
Сообщений: 162
16.01.2015, 17:24
А GUI создаваемой программы? Или можно взять проект из нового Qt Creator и просто пересобрать его в старом линуксе через консоль?
0
 Аватар для RazrFalcon
1403 / 1260 / 262
Регистрация: 10.11.2013
Сообщений: 3,763
16.01.2015, 17:30
Цитата Сообщение от KOSHAK_ Посмотреть сообщение
А GUI создаваемой программы?
Не понял.

Цитата Сообщение от KOSHAK_ Посмотреть сообщение
Или можно взять проект из нового Qt Creator и просто пересобрать его в старом линуксе через консоль?
Не важно какой Qt Creator. Он лишь оболочка. Прогу собирает qmake и make. Qt Creator фиолетово какая версия Qt используется.

Цитата Сообщение от KOSHAK_ Посмотреть сообщение
Кстати, где взять установщик креатора?
На офсайте?!

Цитата Сообщение от KOSHAK_ Посмотреть сообщение
Скачал в формате *.bin, а он не ставится и матерится крякозябрами...
Bash
1
chmod +x installer.bin
0
 Аватар для KOSHAK_
114 / 3 / 0
Регистрация: 16.11.2011
Сообщений: 162
16.01.2015, 17:38
Да с установкой уже разобрался, сначала протупил и пытался запустить x86 версию на Ubuntu x64, сейчас все уже ставится. С ним все таки удобнее делать программы
0
 Аватар для KOSHAK_
114 / 3 / 0
Регистрация: 16.11.2011
Сообщений: 162
19.01.2015, 11:32
Пытаюсь собрать Qt 4.6.2 под Ubuntu 10.04. На команду ./configure он после нескольких шагов сборки выдает:
Code
1
2
3
Basic XLib functionality test failed!
 You might need to modify the include and library search paths by editing
 QMAKE_INCDIR_X11 and QMAKE_LIBDIR_X11 in /home/oleg/qt-everywhere-opensource-src-4.6.2/mkspecs/linux-g++
Что ему надо? Что за инклуды он просит модифицировать? В Содержимое папки linux-g++ прикладываю.
Вложения
Тип файла: zip linux-g++.zip (2.0 Кб, 8 просмотров)
0
 Аватар для RazrFalcon
1403 / 1260 / 262
Регистрация: 10.11.2013
Сообщений: 3,763
19.01.2015, 13:33
нужные xlib не установлены
0
 Аватар для KOSHAK_
114 / 3 / 0
Регистрация: 16.11.2011
Сообщений: 162
19.01.2015, 13:40
Уже разобрался =) Наконец-то заставил работать прогу на этом калечном Astra Linux =)
0
0 / 0 / 0
Регистрация: 04.02.2015
Сообщений: 2
04.02.2015, 09:20
Так все это делается через Maintenance tool. Я неправ?
0
zzzZZZ...
 Аватар для dzrkot
527 / 358 / 94
Регистрация: 11.09.2013
Сообщений: 2,041
31.05.2015, 15:13
Цитата Сообщение от Dmitriy_M Посмотреть сообщение
Хм. Под Debian 6 без дополнительных пинков configure не проходит.
подниму вопрос, если вы собрали под debian 6 то как, напишите пожалуйста, актуально)
0
161 / 45 / 10
Регистрация: 25.08.2014
Сообщений: 345
14.04.2016, 11:45
Подниму тему.
Подскажите пожалуйста что надо установить или как правильно запустить.
Делаю как в первом посте описанно. Только сборка поновее qt-everywhere-opensource-src-5.5.1.tar.gz
Делаю из под рута
Добавлял ключи -qt-xcb, и -no-xcb результат один и тот же

WARNING: Using static linking will disable the use of dynamically
loaded plugins. Make sure to import all needed static plugins,
or compile needed modules into the library.
Could not find qmake configuration file linux-g++.
Error processing project file: home/sp/Загрузки/qt-everywhere-opensource-src-5.5.1/qt.pro
0
 Аватар для RazrFalcon
1403 / 1260 / 262
Регистрация: 10.11.2013
Сообщений: 3,763
14.04.2016, 11:53
Цитата Сообщение от Sph Посмотреть сообщение
Делаю из под рута
Не стоит.

Цитата Сообщение от Sph Посмотреть сообщение
Could not find qmake configuration file linux-g++.
Вот это конкретно и ошибка. Остальное так, предупреждения.

Решение гуглится на раз.
0
161 / 45 / 10
Регистрация: 25.08.2014
Сообщений: 345
14.04.2016, 13:57
Цитата Сообщение от RazrFalcon Посмотреть сообщение
Вот это конкретно и ошибка. Остальное так, предупреждения.
Решение гуглится на раз.
Я не нашел решения.
Я указывал и linux-g++ и linux-g++-64
И полный путь писал
Результат один и тот же.
Если вы знаете решение, напиши пожалуйста.

Добавлено через 1 час 5 минут
*кстати, папка /usr/lib/Qt5_static создается, но она пустая, так и должно быть? или она просто создается но из-за ошибки не дособирает туда ничего?
0
1 / 1 / 0
Регистрация: 01.11.2010
Сообщений: 216
03.08.2016, 12:07
А эта тема еще развивается? А то смотрю автор не отписывался в ней после публикации.
0
 Аватар для gromo
383 / 281 / 31
Регистрация: 04.09.2009
Сообщений: 1,225
03.08.2016, 12:09  [ТС]
BlinCT, а что тут еще отписывать? Процесс сборки практически идентичный для последующих версий, что при наличии любопытства превращается в далеко не тяжелую задачу
0
1 / 1 / 0
Регистрация: 01.11.2010
Сообщений: 216
03.08.2016, 18:04
Сейчас опишу проблему, надеюсь вы как автор сможете посоветовать.
Скажите, вот я пытаюсь попробовать изменить пути именно поиска библиотек. Делаю такой командой в консоли chrpath -r lib/ ProjectTimer то есть чтобы программа ProjectTimer искала либы около себя в каталоге lib.
Вот так выглядит дерево.
http://picpaste.com/__________... pw0JNW.png

А вот так выглядит вывод ldd
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
ldd ../build-ProjectTimer-Desktop_Qt_5_7_0_GCC_64bit-Debug/ProjectTimer
../build-ProjectTimer-Desktop_Qt_5_7_0_GCC_64bit-Debug/ProjectTimer: /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5: version `Qt_5' not found (required by ../build-ProjectTimer-Desktop_Qt_5_7_0_GCC_64bit-Debug/ProjectTimer)
../build-ProjectTimer-Desktop_Qt_5_7_0_GCC_64bit-Debug/ProjectTimer: /usr/lib/x86_64-linux-gnu/libQt5Qml.so.5: version `Qt_5' not found (required by ../build-ProjectTimer-Desktop_Qt_5_7_0_GCC_64bit-Debug/ProjectTimer)
../build-ProjectTimer-Desktop_Qt_5_7_0_GCC_64bit-Debug/ProjectTimer: /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5: version `Qt_5' not found (required by ../build-ProjectTimer-Desktop_Qt_5_7_0_GCC_64bit-Debug/ProjectTimer)
../build-ProjectTimer-Desktop_Qt_5_7_0_GCC_64bit-Debug/ProjectTimer: /usr/lib/x86_64-linux-gnu/libQt5Quick.so.5: version `Qt_5' not found (required by ../build-ProjectTimer-Desktop_Qt_5_7_0_GCC_64bit-Debug/ProjectTimer)
../build-ProjectTimer-Desktop_Qt_5_7_0_GCC_64bit-Debug/ProjectTimer: /usr/lib/x86_64-linux-gnu/libQt5Core.so.5: version `Qt_5.7' not found (required by ../build-ProjectTimer-Desktop_Qt_5_7_0_GCC_64bit-Debug/ProjectTimer)
../build-ProjectTimer-Desktop_Qt_5_7_0_GCC_64bit-Debug/ProjectTimer: /usr/lib/x86_64-linux-gnu/libQt5Core.so.5: version `Qt_5' not found (required by ../build-ProjectTimer-Desktop_Qt_5_7_0_GCC_64bit-Debug/ProjectTimer)
    linux-vdso.so.1 =>  (0x00007ffc94493000)
    libQt5QuickControls2.so.5 => not found
    libQt5Quick.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Quick.so.5 (0x00007f23ec9d9000)
    libQt5Widgets.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 (0x00007f23ec349000)
    libQt5Gui.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5 (0x00007f23ebe01000)
    libQt5Qml.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Qml.so.5 (0x00007f23eb9d1000)
    libQt5Core.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 (0x00007f23eb4f9000)
    libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f23eb171000)
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f23eaf59000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f23eab89000)
    libQt5Network.so.5 => /usr/lib/x86_64-linux-gnu/libQt5Network.so.5 (0x00007f23eaa29000)
А еще я пытаюсь именно в .pro файле прописать
QMAKE_LFLAGS += -Wl,-rpath,"'lib/'"
LD_LIBRARY_PATH = lib/

Но как бы это не помогает. По этому решил просто обратится за советом, скажите, или я что то не совсем так делаю из выше описанного или это в принципе не работает и стоит именно по вашей теме пересобрать все чтобы прогу можно было статически с либами линковать?
Буду очень признателен в хотя бы небольшой помощи по данной теме. Хочу для Убунты собрать свой программу в SNAP пакет)
Если что, я брал тему по изменению путей от сюда http://www.tripleboot.org/?p=138

Добавлено через 4 часа 31 минуту
Выше отписался Sph что у него создался каталог /usr/Qt5_static но он пустой, и у меня так же. И когда подключил в проект новый инструментарий то он начал в этом каталоге конфиг искать, Само собою не нашол.
Cannot read /usr/local/Qt5_static/mkspecs/linux-g++/qmake.conf: No such file or directory
Could not read qmake configuration file /usr/local/Qt5_static/mkspecs/linux-g++/qmake.conf.
Project ERROR: Unknown module(s) in QT: qml quick quickwidgets quickcontrols2
Project ERROR: Unknown module(s) in QT: qml quick quickwidgets quickcontrols2

Добавлено через 1 час 18 минут
Ошибка с отсутствующим каталогом найдена. В этом все норм.
0
0 / 0 / 0
Регистрация: 21.09.2015
Сообщений: 4
08.06.2017, 16:24
KOSHAK_, Подскажите пожалуйста, а как Вы решили проблему с fontconfig (у меня точь-в-точь такая же проблема и ошибки)?
0
0 / 0 / 0
Регистрация: 21.09.2015
Сообщений: 4
14.06.2017, 16:19
RazrFalcon, gromo, могу я у Вас спросить, что за беда у меня происходит?

1) скачал qt-everywhere-opensource-src-5.9.0
2) разархивировал в свою папку
3) открыл консоль из папки архива
4) вбиваю следующие строки в консоль:

max@max-PC ~/qt-everywhere-opensource-src-5.9.0 $ pr="/home/max/bin/qt590_linux64_static"
max@max-PC ~/qt-everywhere-opensource-src-5.9.0 $ src=/home/max/qt-everywhere-opensource-src-5.9.0
max@max-PC ~/qt-everywhere-opensource-src-5.9.0 $ logf="conf_run_log590_64bit_static"
max@max-PC ~/qt-everywhere-opensource-src-5.9.0 $
max@max-PC ~/qt-everywhere-opensource-src-5.9.0 $ $src/configure -v -static -confirm-license -opensource -system-zlib -system-pcre -system-xcb \
> -skip webengine -skip websockets -skip webchannel -no-icu -no-sql-mysql \
> -no-compile-examples -nomake examples -system-libpng -system-libjpeg -openssl-linked -no-qml-debug -release -force-debug-info -separate-debug-info \
> -system-freetype -fontconfig -no-strip -v \
> -skip qt3d -skip charts -skip connectivity -skip datavis3d -skip declarative -skip doc -skip gamepad -skip location \
> -skip quickcontrols -skip quickcontrols2 -skip script -skip sensors -skip serialbus -skip purchasing -skip wayland \
> -prefix $pr 2>&1 | tee $logf

5) qt поставился, всё хорошо.
6) открываю QtCreator, далее по пунктам с 3-5 данного описания статической линковки (воспользовался скриптом, который написал RazrFalcon, добавил в .pro файл необходимые строки с путём к директории с библиотеками, пересобрал бинарь и заархивировал полностью всю папку с библиотеками)
7) перенёс на другую машину с таким же Linux, но при запуске выдаёт ошибку:

error while loading shared libraries: libxcb-xinerama.so.0: cannot open shared object file: No such file or directory.

Файл этот в папке lib есть.

В чём может быть проблема, подскажите пожалуйста?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
14.06.2017, 16:19
Помогаю со студенческими работами здесь

Знакомство с GNU/Linux
требуется объединить содержимое 2-х файлов,например task1.cpp и task3.cpp в единый новый файл и провести его компиляцию. Пробовала...

Отличие freeBSD от GNU/Linux
Доброй ночи это одно и тоже. Просто пишут иногда что подходит как для FreeBSD так и для Linux. Получается есть отличие. В чем оно?

Удаление GNU\Linux из автозагрузки
Хотел установить kali Linux как 2 ОС на компьютер (disk C). Установил криво. Хотел удалить. Сделал резервное восстановление. Но Linux...

Помагите с Debian Gnu Linux ?
Помагите я установил но дальше тупик какойто что делать в ней не знаю помагите ? хотел проектировать но не знаю как ?

Не работает kali linux на VirtualBox 6.0.16 r135674 (Qt5.6.2)
Сразу же - почему то при создании новой операционки есть только 32 битные варианты всех систем, погуглил. Проблема в отсутствии поддержки...


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

Или воспользуйтесь поиском по форуму:
60
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru