Генерация исполняемых файлов в Linux - PullRequest
3 голосов
/ 13 сентября 2009

Я программист с большим опытом работы с Java, Ruby, Python и другими высокоуровневыми / динамическими языками. Я сталкиваюсь с проблемой, когда мне нужно кодировать исполняемый файл Linux (для 64 и, возможно, 32-разрядных ОС), и ни один из этих языков не подходит для этой задачи, потому что в итоге мне также приходится распределять среду выполнения.

Я действительно не могу написать приличный код на C, поэтому я хотел бы попросить совета относительно хорошего языка высокого уровня, который поддерживает обмен данными через сокеты и порождение процессов, который мог бы создавать промежуточный код на C или автономные исполняемые файлы Linux.

Ответы [ 4 ]

6 голосов
/ 13 сентября 2009

Для python вы можете использовать Freeze .

Из вики:

Freeze - это утилита «чистого Python», которая поставляется с Python. Вы можете использовать Freeze скомпилировать исполняемые файлы для Unix системы.

Если вы хотите написать Python, но вы не знаю, есть ли у ваших клиентов Python установлен, используйте это!

5 голосов
/ 13 сентября 2009

Некоторые варианты:

  1. Изучение C или C ++. Как трудно это может быть? Это может быть весело.
  2. Используйте gcj . Это Java-компилятор GNU.
  3. Использовать RubyScript2Exe
3 голосов
/ 13 сентября 2009

Если вы готовы отказаться от темной стороны, есть несколько экспериментальных «компиляторов» (т.е. перевод на C) для Perl. Я не знаю, как вы к этому относитесь - многие фанатики Python (не все фанаты Python фанатичны), похоже, ненавидят это из-за страсти без реальной оправданной причины, но я полагаю, что люди должны иметь свои религиозные мнения.

Что бы это ни стоило, для большинства «высокоуровневых» языков любой реальный компилятор просто собирается связать вашу программу со средой выполнения. Если вы действительно этого не хотите, вам придется использовать C (и даже C требует стандартную библиотеку, хотя ни одна из используемых систем не уже не поставляется с ней) или C ++ (см. Предыдущий ).

Вы можете попробовать Haskell, который должен компилироваться непосредственно в машинный код, но может не иметь достаточно зрелых библиотек на ваш вкус и, вероятно, повредит вашему мозгу, пока вы пытаетесь его изучить. Или, может быть, Erlang, если вам сильно нужен параллелизм, хотя я не знаю, является ли это конкретно процессом порождения или просто сильной поддержкой параллелизма. Там также должны быть компиляторы для различных диалектов Лисп, но еще раз я не знаю, насколько хорошо язык / библиотеки могут подходить для ваших задач.

0 голосов
/ 13 сентября 2009

Возможно, вы захотите рассмотреть Perl, так как он установлен в большинстве систем UNIX по умолчанию в наши дни. Это не очень похоже на язык более высокого уровня, но это немного проще, чем написание C. Я бы взял копию Accelerated C ++ и написал бы ее на C ++. Возможно, вам стоит изучить C ++ для подобных задач. Как только вы освоите программирование с помощью Boost и STL, он действительно может почувствовать себя языком более высокого уровня.

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