Автор Тема: Компилиране на програма за всякакъв вид процесор  (Прочетена 8151 пъти)

LinuxFanUNIX

  • Напреднали
  • *****
  • Публикации: 408
  • Distribution: Slackware 12.2
  • Window Manager: KDE 3.5.10
    • Профил
Добър вечер,

Направих си проектче, което искам да разпространя, но ме интересува, как да го компилирам за всякакъв вид процесори, т.е. да е четим както за моя процесор (Intel Pentium 4), така и за останалите - пример: Intel Core Duo, пък и защо не и за AMD...?

Та бихте ли ми казали какви инструкции в make трябва да използвам за да се компилира за Multiprocesor support...?

/etc/make.conf не съществува...

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

n00b

  • Напреднали
  • *****
  • Публикации: 1248
  • Distribution: OSX
  • Window Manager: 10.6, 10.8, 10.9
  • Live to hack, hack to live.
    • Профил
Компилирай я с опция за 686.

За много повече информация виж Гентутата.

http://www.gentoo.org/doc/en/gcc-optimization.xml
http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/i386-and-x86_002d64-Options.html#i386-and-x86_002d64-Options
http://gcc.gnu.org/onlinedocs/gcc-4.1.2/gcc/Optimize-Options.html#Optimize-Options

----------------
Накратко за мен е "march=i686 -Os"
Активен

mobilio - професионални мобилни приложения

task_struct

  • Напреднали
  • *****
  • Публикации: 576
  • Distribution: Kubuntu 14.04
  • Window Manager: KDE 4.13
    • Профил
Ако една програма е компилирана за Intel/AMD процесор, то тя ще работи и на другия. Като само трябва да се има впредвид дали е компилирана за 64битов или 32битов процесор.
Multiprocessor support-а се осигурява от операционната система, ако тя е конфигурирана за това и процесора не е едноядрен.
Иначе, ако твоята програма не е многонишкова, няма значение на какъв процесор/ОС я пускаш тя ще си работи само на едното ядро.
Активен

"Minds are like parachutes. They only function when they are open." - James Dewar

irc.freenode.net  / #linux-bg

LinuxFanUNIX

  • Напреднали
  • *****
  • Публикации: 408
  • Distribution: Slackware 12.2
  • Window Manager: KDE 3.5.10
    • Профил
В крайна сметка наистина ли е нужно нещо друго освен qmake-qt4 && make, да се направи за да бъде използвана програмата ми както на моя Intel (Pentium 4), така и за AMD??? Няма значение дали ще е за eдно ядро или две, важното да е изпълнима за всички процесори...

Та какво точно да направя...?

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

task_struct

  • Напреднали
  • *****
  • Публикации: 576
  • Distribution: Kubuntu 14.04
  • Window Manager: KDE 4.13
    • Профил
Като я компилираш на Intel ще си работи и на АМД :) Спокойно те са напълно съвместими.
Активен

"Minds are like parachutes. They only function when they are open." - James Dewar

irc.freenode.net  / #linux-bg

LinuxFanUNIX

  • Напреднали
  • *****
  • Публикации: 408
  • Distribution: Slackware 12.2
  • Window Manager: KDE 3.5.10
    • Профил
Като я компилираш на Intel ще си работи и на АМД :) Спокойно те са напълно съвместими.
Благодаря за бързия отговор! Радвам се че е така...

А има ли значение дали са писани на Qt4, или е така и при C++ и останалите езици на програмиране?

А при компилиране с g++/gcc има ли значение дали само пиша g++/ gcc или не...

А и още нещо...

А от Intel-ите от по-нисък клас от Pentium 4, понеже е i686, ще поддържат ли програмите (т.е. да речем i386...?)

Извинявам се за може би тъпите въпроси...

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

n00b

  • Напреднали
  • *****
  • Публикации: 1248
  • Distribution: OSX
  • Window Manager: 10.6, 10.8, 10.9
  • Live to hack, hack to live.
    • Профил

1. При всички езици е така с изключение на скриптовете - PHP, Perl, Ruby, Bash и т.н.

2. Не разбирам уви въпроса - какъвто езика такъв и компилатора - gcc обаче е compiler suite - и поддържа почти всичко. C/Objective C/C++.

3. i686 е всичко от PentiumPro нагоре включително него - нека броим - Pentium2, Pentium3, PentiumM, Pentium4, iCore, CoreSolo, CoreDuo и т.н.

i386 е минимума - поддържа 386, 486 и забележи 586 - основно клонинзи на Pentium барабар с него самия.
Активен

mobilio - професионални мобилни приложения

task_struct

  • Напреднали
  • *****
  • Публикации: 576
  • Distribution: Kubuntu 14.04
  • Window Manager: KDE 4.13
    • Профил
Няма значение от езика. Компилатора ще компилира за архитектурата, за която е той е конфигуриран или му е подадена.
За повече информация: http://gcc.gnu.org/onlinedocs/gcc/i386-and-x86_002d64-Options.html
Активен

"Minds are like parachutes. They only function when they are open." - James Dewar

irc.freenode.net  / #linux-bg

v_badev

  • Напреднали
  • *****
  • Публикации: 1355
    • Профил
А при компилиране с g++/gcc има ли значение дали само пиша g++/ gcc или не...
gcc е C компилатор, g++ е C++ компилатор. Понеже ползваш QT най-вероятно пишеш на C++.
А от Intel-ите от по-нисък клас от Pentium 4, понеже е i686, ще поддържат ли програмите (т.е. да речем i386...?)
Не вярвам програма която е писана с QT4 да работи на 386. Все пак става дума за процесори работещи на не повече от 40MHz. Дори и Debian вече не поддържат i386. Според мен i586 е най-старият процесор за който има смисъл да компилираш.
Активен

LinuxFanUNIX

  • Напреднали
  • *****
  • Публикации: 408
  • Distribution: Slackware 12.2
  • Window Manager: KDE 3.5.10
    • Профил
Дори и да е така, и i586 да е най-стария процесор, ако програмата която пиша я компилирам просто със make, без да съществува /etc/make.conf, без да съм редактирам Makefile, без да съм настройвал g++ предварително, ще се поддържа ли програмата или трябват допълнителни настройки...?
Активен

tarator

  • Напреднали
  • *****
  • Публикации: 849
    • Профил
Ако компилираш на 64 битова дистрибуция, изпълнимия файл ще работи само на 64-битов Линукс. Ако компилираш на 32-битова ще работи на 32-битов Линукс.

Най-добре разпространявай програмата с изходния код.
Активен

A gentleman is one who is never rude unintentionally. - Noel Coward

task_struct

  • Напреднали
  • *****
  • Публикации: 576
  • Distribution: Kubuntu 14.04
  • Window Manager: KDE 4.13
    • Профил
Ако я компилираш с make, ще се компилира за какъвто е процесора на машината, на която компилираш. /etc/make.conf не играе никаква роля, той е за Gentoo и portage просто подава аргументите записани в него на gcc/g++ останалите дистрибуции нямат такъв файл.

За да обобщя: Ако пуснеш просто make на една 32битова машина, без значение Intel/AMD, то после тя ще работи на всички 32битови машини. Същото се отнася и за 64битовите.
Активен

"Minds are like parachutes. They only function when they are open." - James Dewar

irc.freenode.net  / #linux-bg

LinuxFanUNIX

  • Напреднали
  • *****
  • Публикации: 408
  • Distribution: Slackware 12.2
  • Window Manager: KDE 3.5.10
    • Профил
А на 64??? Няма ли и там да работи, дори и на едно ядро...?
Активен

ircn

  • Напреднали
  • *****
  • Публикации: 26
    • Профил
А не мислиш ли, че задаваш въпроси на които вече ти е отговорено
Активен

LinuxFanUNIX

  • Напреднали
  • *****
  • Публикации: 408
  • Distribution: Slackware 12.2
  • Window Manager: KDE 3.5.10
    • Профил
А не мислиш ли, че задаваш въпроси на които вече ти е отговорено
А при теб, как така се случи да направиш сефтето на форума като пишеш баш в моята тема...  ::)
Активен