Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 183, средняя оценка - 4.78
gromo
 Аватар для gromo
367 / 266 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
23.01.2014, 19:10     GNU/Linux Qt5.* - Линкуем статически #1
В связи с отсутствием в данной теме мануала по статической линковке приложений 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
Код
Объяснение опций:
-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. Добавляем туда
Код
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/ (в данном случае):
Код
LIBS += -Wl,-rpath lib/
Теперь все это дело в .tar.gz и можете делиться с друзьями своим приложением

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

Ps. На MacOS процедура практически не должна отличаться, но у меня нет возможности проверить.
Pss. Если ваше приложени базируется на плагинах, то они по своей природе не могут линковаться статически..
Смотрите документацию http://qt-project.org/doc/qt-4.8/deployment-x11.html и все вытекающие перекрестные ссылки по плагинам.
___________________________________________________________________________________________________________
Вроди бы ничего не забыл...
Надеюсь, статейка кому-нибудь поможет разобраться.
Спасибо и удачи
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
RazrFalcon
 Аватар для RazrFalcon
1371 / 1228 / 260
Регистрация: 10.11.2013
Сообщений: 3,727
14.01.2015, 16:52     GNU/Linux Qt5.* - Линкуем статически #41
Цитата Сообщение от KOSHAK_ Посмотреть сообщение
А версию Qt можно оставить прежней?
Да. Скорее всего проблем не будет.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
KOSHAK_
 Аватар для KOSHAK_
1 / 1 / 0
Регистрация: 16.11.2011
Сообщений: 108
14.01.2015, 16:54     GNU/Linux Qt5.* - Линкуем статически #42
Спасибо, пошел качать образ. В пятницу продолжу мучения
KOSHAK_
 Аватар для KOSHAK_
1 / 1 / 0
Регистрация: 16.11.2011
Сообщений: 108
16.01.2015, 17:05     GNU/Linux Qt5.* - Линкуем статически #43
Блин, на старой Ubuntu Qt Creator 1.3.1. он отказывается работать с Qt 5.3.2. Можно поставить туда новый Qt Creator?
RazrFalcon
 Аватар для RazrFalcon
1371 / 1228 / 260
Регистрация: 10.11.2013
Сообщений: 3,727
16.01.2015, 17:14     GNU/Linux Qt5.* - Линкуем статически #44
Цитата Сообщение от KOSHAK_ Посмотреть сообщение
Можно поставить туда новый Qt Creator?
Да. А зачем он вам вообще? Qt собирается через консоль на раз-два.
KOSHAK_
 Аватар для KOSHAK_
1 / 1 / 0
Регистрация: 16.11.2011
Сообщений: 108
16.01.2015, 17:24     GNU/Linux Qt5.* - Линкуем статически #45
А GUI создаваемой программы? Или можно взять проект из нового Qt Creator и просто пересобрать его в старом линуксе через консоль?
RazrFalcon
 Аватар для RazrFalcon
1371 / 1228 / 260
Регистрация: 10.11.2013
Сообщений: 3,727
16.01.2015, 17:30     GNU/Linux Qt5.* - Линкуем статически #46
Цитата Сообщение от KOSHAK_ Посмотреть сообщение
А GUI создаваемой программы?
Не понял.

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

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

Цитата Сообщение от KOSHAK_ Посмотреть сообщение
Скачал в формате *.bin, а он не ставится и матерится крякозябрами...
Bash
1
chmod +x installer.bin
KOSHAK_
 Аватар для KOSHAK_
1 / 1 / 0
Регистрация: 16.11.2011
Сообщений: 108
16.01.2015, 17:38     GNU/Linux Qt5.* - Линкуем статически #47
Да с установкой уже разобрался, сначала протупил и пытался запустить x86 версию на Ubuntu x64, сейчас все уже ставится. С ним все таки удобнее делать программы
KOSHAK_
 Аватар для KOSHAK_
1 / 1 / 0
Регистрация: 16.11.2011
Сообщений: 108
19.01.2015, 11:32     GNU/Linux Qt5.* - Линкуем статически #48
Пытаюсь собрать Qt 4.6.2 под Ubuntu 10.04. На команду ./configure он после нескольких шагов сборки выдает:
Код
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 Кб, 5 просмотров)
RazrFalcon
 Аватар для RazrFalcon
1371 / 1228 / 260
Регистрация: 10.11.2013
Сообщений: 3,727
19.01.2015, 13:33     GNU/Linux Qt5.* - Линкуем статически #49
нужные xlib не установлены
KOSHAK_
 Аватар для KOSHAK_
1 / 1 / 0
Регистрация: 16.11.2011
Сообщений: 108
19.01.2015, 13:40     GNU/Linux Qt5.* - Линкуем статически #50
Уже разобрался =) Наконец-то заставил работать прогу на этом калечном Astra Linux =)
felblade
0 / 0 / 0
Регистрация: 04.02.2015
Сообщений: 2
04.02.2015, 09:20     GNU/Linux Qt5.* - Линкуем статически #51
Так все это делается через Maintenance tool. Я неправ?
dzrkot
zzzZZZ...
 Аватар для dzrkot
516 / 346 / 53
Регистрация: 11.09.2013
Сообщений: 1,993
31.05.2015, 15:13     GNU/Linux Qt5.* - Линкуем статически #52
Цитата Сообщение от Dmitriy_M Посмотреть сообщение
Хм. Под Debian 6 без дополнительных пинков configure не проходит.
подниму вопрос, если вы собрали под debian 6 то как, напишите пожалуйста, актуально)
Sph
158 / 42 / 10
Регистрация: 25.08.2014
Сообщений: 341
14.04.2016, 11:45     GNU/Linux Qt5.* - Линкуем статически #53
Подниму тему.
Подскажите пожалуйста что надо установить или как правильно запустить.
Делаю как в первом посте описанно. Только сборка поновее 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
RazrFalcon
 Аватар для RazrFalcon
1371 / 1228 / 260
Регистрация: 10.11.2013
Сообщений: 3,727
14.04.2016, 11:53     GNU/Linux Qt5.* - Линкуем статически #54
Цитата Сообщение от Sph Посмотреть сообщение
Делаю из под рута
Не стоит.

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

Решение гуглится на раз.
Sph
158 / 42 / 10
Регистрация: 25.08.2014
Сообщений: 341
14.04.2016, 13:57     GNU/Linux Qt5.* - Линкуем статически #55
Цитата Сообщение от RazrFalcon Посмотреть сообщение
Вот это конкретно и ошибка. Остальное так, предупреждения.
Решение гуглится на раз.
Я не нашел решения.
Я указывал и linux-g++ и linux-g++-64
И полный путь писал
Результат один и тот же.
Если вы знаете решение, напиши пожалуйста.

Добавлено через 1 час 5 минут
*кстати, папка /usr/lib/Qt5_static создается, но она пустая, так и должно быть? или она просто создается но из-за ошибки не дособирает туда ничего?
BlinCT
1 / 1 / 0
Регистрация: 01.11.2010
Сообщений: 107
03.08.2016, 12:07     GNU/Linux Qt5.* - Линкуем статически #56
А эта тема еще развивается? А то смотрю автор не отписывался в ней после публикации.
gromo
 Аватар для gromo
367 / 266 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
03.08.2016, 12:09  [ТС]     GNU/Linux Qt5.* - Линкуем статически #57
BlinCT, а что тут еще отписывать? Процесс сборки практически идентичный для последующих версий, что при наличии любопытства превращается в далеко не тяжелую задачу
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.08.2016, 18:04     GNU/Linux Qt5.* - Линкуем статически
Еще ссылки по теме:

Qt5 + Raspberry Pi C++ Qt
Qt5 и QFtp C++ Qt
QT5/0/1 библиотеки C++ Qt
C++ Qt Clion + Qt5
C++ Qt QJsonValue в Qt5

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

Или воспользуйтесь поиском по форуму:
BlinCT
1 / 1 / 0
Регистрация: 01.11.2010
Сообщений: 107
03.08.2016, 18:04     GNU/Linux Qt5.* - Линкуем статически #58
Сейчас опишу проблему, надеюсь вы как автор сможете посоветовать.
Скажите, вот я пытаюсь попробовать изменить пути именно поиска библиотек. Делаю такой командой в консоли chrpath -r lib/ ProjectTimer то есть чтобы программа ProjectTimer искала либы около себя в каталоге lib.
Вот так выглядит дерево.
http://picpaste.com/________________...3-Plpw0JNW.png

А вот так выглядит вывод ldd
Код
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 минут
Ошибка с отсутствующим каталогом найдена. В этом все норм.
Yandex
Объявления
03.08.2016, 18:04     GNU/Linux Qt5.* - Линкуем статически
Ответ Создать тему
Опции темы

Текущее время: 23:51. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru