Могу ли я запустить двоичный файл, скомпилированный с C ++ 11, на платформе, которая его не поддерживает? - PullRequest
2 голосов
/ 09 июля 2011

У меня есть 2 аналогичные (скажем, linux) платформы A и B. A поддерживает C ++ 03 и C ++ 11;однако B поддерживает только компилятор C ++ 03.

Я компилирую код (с C ++ 03) на платформе A и могу без проблем запустить его двоичный файл на B.Верен ли этот случай и для C ++ 11?(Это может работать на моей платформе, но я хочу знать в более широком смысле).

Другими словами, ограничен ли C ++ 11 только компиляцией или это также расширение инфраструктуры (добавлено с поддержкой новых библиотек инити)?

Ответы [ 4 ]

7 голосов
/ 09 июля 2011

В общем, да, но на целевой машине должны присутствовать библиотеки времени выполнения C ++ 0X, или среда выполнения должна быть статически связана с исполняемым файлом.

2 голосов
/ 09 июля 2011

Да.

Если у вас есть исполняемые файлы или исполняемые файлы, они должны работать на любой платформе. Это цель их в первую очередь.

1 голос
/ 09 июля 2011

Поскольку C ++, независимо от версии, компилируется до Assembly (и OS-API-вызовы, если динамически связаны), конечно, может, если набор инструкций поддерживается платформой (и присутствуют надлежащие DLL).

0 голосов
/ 11 июля 2011

Чтобы противопоставить специфичный для Linux ответ:

В Windows нет понятия «поддерживаемые платформы C ++». Это работает наоборот: компиляторы C ++ могут работать с разными версиями Windows. Среда выполнения C ++ для VS2010 поддерживает XP SP2 и более поздние версии.

...