Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Bulgarian
  4. Компилиране на x86 приложение на x64 платформа
QtWS25 Last Chance

Компилиране на x86 приложение на x64 платформа

Scheduled Pinned Locked Moved Bulgarian
9 Posts 3 Posters 5.9k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • K Offline
    K Offline
    KDebian
    wrote on 31 Jan 2014, 19:44 last edited by
    #1

    Здравейте. Инсталирам си Qt 5.2.0 for Windows 64-bit (VS 2012, 590 MB). Правя си някакъв проект и съответно го компилирам. Преди обаче да го компилирам какви настройки трябва да направя на QtCreator-а (или qmake файла, може би) за да build-не приложението така че да е съвместимо и с 32, и с 64 битови машини?

    Благодаря предварително!

    1 Reply Last reply
    0
    • R Offline
      R Offline
      Robbin
      wrote on 1 Feb 2014, 08:11 last edited by
      #2

      Във .pro файла на проекта си добави
      @
      QMAKE_SPEC = win32-msvc2012
      @

      Не съм сигурен дали това е правилния specs файл, провери какво имаш на системата си. Аз ползвам крос компилатор от 64 битов линукс или 32 битов XP с mingw, съответно QMAKE_SPEC при мен е win32-g++ на крос компилатора и нищо допълнително на уиндоуса.

      Ако искаш да правиш само 32 битови приложения, въпросния mkspecs можеш да го добавиш в настройките на Qt Creator - Build & Run, Kits (намира се най- долу на прозореца след като избереш някой от китовете). Разбира се, можеш да си направиш нов кит и да добавиш там mkspecs, че да имаш и за 32 и за 64 битово компилиране китове.

      1 Reply Last reply
      0
      • K Offline
        K Offline
        KDebian
        wrote on 1 Feb 2014, 16:15 last edited by
        #3

        Благодаря за полезната информация. Обаче ми е интересно след като има такава команда, има ли вариант да се билдват два типа приложения - x86 съответно в папка x86 и x64 - в папка x64? Знам че компилирането ще е по-бавно, но това не е проблем.

        1 Reply Last reply
        0
        • R Offline
          R Offline
          Robbin
          wrote on 2 Feb 2014, 07:07 last edited by
          #4

          Едновременно? Не.
          В процеса на компилиране, обектните файлове се "пакетират" с необходимото за избраната архитектура. За да може да се компилира за друга архитектура, въпросните файлове трябва да се изчистят. Ако имаш предвид да компилираш първо за 32, после за 64 бита и да запазиш и двата изпълними файла - според мен ще имаш по- голям успех с някакъв скрипт (.bat файл?) който да ти автоматизира процеса.

          За какво ти е такъв тип функционалност? Обикновено няма нещо което да работи на 32 битова система и да не работи на 64, освен ако не искаш да прескочиш някой специфични хардуерни граници на 32 битовата система.

          1 Reply Last reply
          0
          • K Offline
            K Offline
            KDebian
            wrote on 2 Feb 2014, 15:59 last edited by
            #5

            Е, редно е когато една програма се пише, да използва максимално ресурсите които може да даде дадената система. Ако е x64, защо да не използва и двете ядра? Мислех че има някакъв автоматизиран процес, уви - няма. Благодаря за отговорите. Ще ги компилирам по този начин - първо x64, после с QMAKE_SPEC = win32-msvc2012 за x86.

            1 Reply Last reply
            0
            • R Offline
              R Offline
              Robbin
              wrote on 2 Feb 2014, 17:17 last edited by
              #6

              Ако искаш изчакай отговори и от другите, аз лично за себе си не съм намерил вариант за автоматизирането, може и да съществува ;-)

              1 Reply Last reply
              0
              • T Offline
                T Offline
                task_struct
                wrote on 2 Feb 2014, 22:01 last edited by
                #7

                Здравейте!

                @KDebian, архитектурата няма общо с ядрата. Ако искаш да използва всички ядра, когато компилира, може да му се зададе в настройките.

                Иначе при мен проектите Qt Creator компилира в папки от типа
                "Project-build-Desktop_Qt_5_0_0_GCC_64bit_SDK-Debug" и каквито още варианти си му задал. Изпълнимите файлове са вътре, така че би трябвало само да сменяш, за какво иска да компилираш и той даго прави. Това става с мишката от иконката на проекта в лентата от ляво на Qt Creator. Над бутона Run.

                "Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program."

                • Linu...
                1 Reply Last reply
                0
                • R Offline
                  R Offline
                  Robbin
                  wrote on 3 Feb 2014, 19:13 last edited by
                  #8

                  Да, това е при положение че си е задал няколко кита и със съответните настройки за проекта през Qt Creator.
                  Също така мисля че той има предвид да се ползват две или повече ядра при рънтайм, не при компилиране.

                  1 Reply Last reply
                  0
                  • T Offline
                    T Offline
                    task_struct
                    wrote on 3 Feb 2014, 20:16 last edited by
                    #9

                    За да се използват повече ядра приложението трябва да е многонишково. От много нишки има смисъл само ако има многоооо тежко изчисление или блокиращи операции. Всичко останало може да се реализира много лесно със сигнал/слот системата.
                    Дори и да имаш няколко нишки пак не е сигурно, че те ще изпозлват всичките ядра. ОС-а(поне Линукс) се среми да пази нишките на едно от ядрата, за да се използва hot кеша. Идеята, е че споделените променливи, няма нужда да се махат от кеша на съответното ядро и суитчването е по-бързо. За да се изпозлват 2 ядра трябва системата да е доста натоварена и повечето процеси да са на едното ядро, тогава ОС- ще направи load balancing и може да премести нишката на друго ядро. Има и опция (в POSIX) за определене афинитета на нишката, на кое ядро на процесора да се пусне. Но не го препоръчвам, ако не е за нещо специфично като ембедед устройство, където се знае с голяма точност какво става в този момент.

                    "Most good programmers do programming not because they expect to get paid or get adulation by the public, but because it is fun to program."

                    • Linu...
                    1 Reply Last reply
                    0

                    7/9

                    2 Feb 2014, 22:01

                    • Login

                    • Login or register to search.
                    7 out of 9
                    • First post
                      7/9
                      Last post
                    0
                    • Categories
                    • Recent
                    • Tags
                    • Popular
                    • Users
                    • Groups
                    • Search
                    • Get Qt Extensions
                    • Unsolved