Могу ли я скомпилировать любой код C, написанный для Linux, на Windows? - PullRequest
0 голосов
/ 31 августа 2011

посмотрим, сделал ли я сейчас одну программу c на c на машине с Linux, если я хочу скомпилировать эту программу на другом компьютере или, скажем, в Windows, как я могу это сделать?

что, если я использовал в этой программе определенные вещи, такие как pthread.h .?

Есть ли прямой способ сделать это ??

Ответы [ 4 ]

3 голосов
/ 31 августа 2011

посмотрим, сделал ли я сейчас одну программу c на c на машине с Linux, если я хочу скомпилировать эту программу на другом компьютере или, скажем, в Windows, как мне это сделать .?

Тогда я надеюсь, что вы обратили внимание, какие API доступны в Windows, а какие нет. Это не простая проблема, чтобы решить.

Поскольку вы использовали pthreads, в Windows нет замены, совместимой с API. Нативный API - CreateThread и его дочерние элементы. Если вам необходимо поддерживать совместимость на уровне исходного кода, вы либо создаете свои собственные #ifdef правила, оболочку, либо используете стороннюю библиотеку, например APR.

1 голос
/ 31 августа 2011

Да, есть прямой путь: попробуйте скомпилировать, если что-то не получится, попробуйте выяснить, почему: это связано с компилятором или с ОС. Если это связано с компилятором, измените исходный код для вашего нового компилятора (возможно, VS, или вы можете просто использовать mingw). Если это связано с ОС, вам нужно порт код, то есть изменить его для соответствия новой ОС.

В случае pthread.h, есть порт pthreads-w32 Pthreads-w32 для окон, вы можете посмотреть на него.

0 голосов
/ 31 августа 2011

Если ваша программа зависит от библиотек Unix, лучше всего использовать Cygwin . Cygwin - это слой совместимости с Unix поверх Windows, он поставляется с набором портированного программного обеспечения, включая bash, gcc, make и большинство других утилит, которые вы найдете на Linux-коробке. Порт pthreads также доступен.

0 голосов
/ 31 августа 2011

Вы не можете использовать библиотеки, которые не поставляются с Windows, или которые вы не можете использовать с Windows. Но похоже, что есть реализации pthread для Windows. Вам следует проверить, какой эквивалент Windows используется для всех используемых вами библиотек.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...