Скомпилируйте C ++ для всех дистрибутивов Linux - PullRequest
9 голосов
/ 06 декабря 2010

Как мне скомпилировать мои файлы C ++ для работы на ВСЕХ дистрибутивах Linux.Машина, на которой я скомпилирую их, - это Ubuntu 10.10

Если я скомпилирую их на Ubuntu 10.10, будут ли они работать на других дистрибутивах, таких как Ubuntu, Fedora, Debian, не Debian Distros ... и т.д.?

Ответы [ 4 ]

7 голосов
/ 06 декабря 2010
% gcc -o foo foo.c -static

Полученный двоичный файл должен работать на большинстве дистрибутивов, учитывая, что он работает на той же архитектуре (64-битная, 32-битная, arm, mips и т. Д.).

главное: вы не знаетето, что можно найти в целевых системах заранее, вы должны объединить все, что можете, либо в бинарный файл, который вы отправляете, либо в какую-то «хромированную» среду, где вы также развертываете внешние библиотеки (вещи, которые не могут быть связаны статически)) и затем иметь какую-то оболочку для использования развернутых библиотек вместо системных библиотек.

3 голосов
/ 06 декабря 2010

Хотя ответ @akira, вероятно, подойдет для вашего случая, это не лучшее решение. В большинстве дистрибутивов Linux есть системы упаковки, которые получают зависимости для вас.

Если вы серьезно относитесь к написанию программного обеспечения для Linux, которое используется на чужих компьютерах, вам нужно изучить 'GNU Autotools', который и является движущей силой вещи. запустить более одного раза сейчас!

2 голосов
/ 16 декабря 2010

Это намного сложнее, чем должно быть, по крайней мере для C ++: http://www.trilithium.com/johan/2005/06/static-libstdc/

1 голос
/ 07 декабря 2010

При условии, что вы используете только библиотеки, перечисленные в Базе стандартов Linux, динамический исполняемый файл должен подойти.

Для других библиотек, либо связывайте их со статическими версиями, либо поставляйте динамические библиотеки; Я предпочитаю первое.

Я бы лично рекомендовал избегать статического связывания библиотеки C, так как это предотвращает некоторые полезные функции, предоставляемые ею, например, nss stuff ..

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