как собрать исполняемый файл для программы cpp

0

Я работаю над Ubuntu и пишу обычную программу c++.

скомпилировать программу с использованием gcc.

$ gcc test.cpp

Я хочу распространять свою программу в качестве приложения. Когда я дважды нажимаю на файл a.out file.it на своем ПК, но не работаю на другом (Linux) ПК.

Мой вопрос:


  1. GCC требует, чтобы клиентский ПК выполнял заявку?

  2. как я могу создать исполняемый файл для всей платформы (Win, Linux, OS x)?

  • 0
    написать переносимый код.
  • 0
    Вы действительно должны называть g++ .
Показать ещё 1 комментарий
Теги:
gcc

4 ответа

2

Вы пытаетесь скомпилировать файл Windows PE в среде Linux?

Если это так, вам понадобится цепочка инструментов mingW

См. Здесь http://sourceforge.net/projects/mingw-w64/ (Но поскольку проект mingw-w64 на sourceforge.net переместился на mingw-w64.org, я также предлагаю проверить mingw-w64.org)

1

Ответьте на # 1. Нет. Но целевой платформе нужны те же (или совместимые) динамические библиотеки, которые ожидают приложения. Если есть сомнения, скомпилируйте его со статической ссылкой. Это может помочь вам запустить тот же код на разных дистрибутивах Linux.

gcc -static -o your_exe_file test.cpp

Ответьте на # 2. Несколько вариантов:

  • Напишите переносимый код и скомпилируйте его с помощью компилятора C для каждой платформы, на которую вы хотите развернуть. Вы получите три исполняемых файла: один для Linux, другой для Windows и еще один для OS X.

  • Отпустите исходный код и позвольте пользователю делать компиляцию.

  • Используйте язык, такой как Java, Python, С# или любой другой, который не требует перекомпиляции для работы на нескольких платформах.

1

Время автономной работы Windows и Linux отличается. Вам нужно будет перекомпилировать свой код в целевой архитектуре. Если вы скомпилировали свой код в одном дистрибутиве Linux, есть вероятность, что вы сможете запустить его на другом, учитывая, что нет конфликтов библиотек и что архитектура такая же. Вы можете использовать флаг -static чтобы избежать возможных проблем с разделяемыми библиотеками. Вам нужна компиляция cross-compiler toolchain если вам нужно скомпилировать свой код на одной машине, нацеленной на другую машину. Чтобы дать небольшой пример, если вы хотите, чтобы ваш код запускался во встроенной системе, вам нужно будет переносить функции, специфичные для ОС, используя что-то вроде newlib. Поскольку дистрибутивы Linux используют одно и то же ядро, это не проблема. Очевидно, что Windows и Linux совершенно разные.

0

Дополнительное примечание:

Используйте g++ для компиляции источников C++ (gcc для простой C и не включает стандартную библиотеку C++).
Если вы хотите использовать gcc (сильно обескуражен), тогда свяжите исходный файл со стандартной библиотекой C++.

gcc source.cpp -lstdc++

Ещё вопросы

Сообщество Overcoder
Наверх
Меню