Перейти к содержанию

Рекомендуемые сообщения

Опубликовано

Программеры помогите плиз

Надо скомпилить сишный файл так чтоб он не юзал никаких библиотек (shared library)

я сейчас компилю с ключами -s -static

так выходной файл получаеся у Hello World 400 килобайт

ну куда это годится? Sad

В то время как freePascal(как я его не перевариваю) делает

40Kb

Может кто-нибудь подскажет как правильно скомпилить

что бы оно включало в исполняемый файл не всю либу

а тока те функции которые юзаются

Ответте пожалуйста побыстрее. Очень Нужно!

Опубликовано

А он и так использует только те функции, которые юзаются. Просто

a) у них есть зависимости B) есть еще startup код. Например, программка содержащая только вызов puts и слинкованная даже без

startup кода, занимает 350K -- увы, именно столько стаффа надо чтобы puts могло работать....

Единственный выход -- писать свою _start и не пользоваться ISO C

вводом/выводом

Опубликовано

Так что делать ?

Есть ли какой - то другой компилер по Линукс

Я после всего этого gcc почти уважать перестал Sad

Ведь линукс всегда славился своей компактностью.

На дискеты две можно было запихнуть

И вот еще вопрос такой:

Если я буду использовать shared library но на сайте выкладывать только исполняемые файлы ( типа комерческая версия )

то на сколько долго моя прога сможет находить нужные либы

(ведь они тоже меняются)?

Опубликовано

1) компилятор здесь совершенно ни при чем (к тому же он действительно очень хорош, так что не уважать его решительно не за что). Более того, даже линкер здесь ни при чем -- он честно

выбирает только те модули, которые надо.

Тяжелой является именно библиотека glibc. Но она как бы и не очень предназначается для статической линковки. Если очень надо

-- можно попробовать старую Linux libc, она компактнее, но там будут разные проблемы.

Кроме того, на размер Hello World ориентироваться в общем-то не надо. В общем, при статической линковке размер исполняемого файла зависит не только от объема исходника, но и от того, какими функциями из библиотеки пользоваться. Иными словами, исполняемый файл для вполне солидной программы может весить почти те же 500K

что и hello-world.

2) Но сама идея использовать полную статическую линковку мне кажется несколько странной -- так даже под

виндой обычно не делают. Вообще 99% программ под Linux если распространяются не в исходниках, то динамически слинкованы.

Опубликовано

С первым пунктом согласен, но

> 2) Но сама идея использовать полную статическую линковку мне >кажется несколько странной -- так даже под

> виндой обычно не делают. Вообще 99% программ под Linux если >распространяются не в исходниках, то динамически слинкованы.

Мне кажется, что она будет странной, если это фриварный софт,

т.е. если программа у тебя и не запускается то качай исходники и

компилируй ее сам на здаровье.

А если я хочу немного заработать?

То я не могу выкладывать исходники в сети!

А при динамической линковке программа привязывается к конкретным библиотекам. И на каком-нибудь старом или же на

очень новом Linux она может и не запуститься. Sad

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

Опубликовано

Во-первых, freeware и open source -- вещи совершенно разные. На самом деле, вполне можно продавать программы в исходниках.

Во-вторых, на всех без исключения Linuxах бинарная программа работать не будет в любом случае -- хотя бы потому, что ядро ты

статически не прилинкуешь Smile В конце концов, пишешь, что прога

требует, скажем, glibc 2.2 и дело с концом. Это что касается очень старых линух, а что касается новых -- то у нас в отличие от

известной OC c обратной совместимостью все в порядке.

Нащет же виндов я что-то не въехал, что имеется в виду -- там-то

как раз проблемы с несогласованными версиями на каждом шагу....

Опубликовано

Ты хочешь сказать, что если я откомпилил прогу c glibc 2.2

а потом вышел новый glibc 3.0 то эта прога заведется?

Если так, то это очень хорошо и все нападки в сторону gcc и libc

снимаются. Smile

Опубликовано

Тут, видишь ли, никто тебе гарантий не даст. Все зависит от того,

насколько новая версия либы отличается от старой и насколько разработчики думали об обратной совместимости. Но в принципе (особенно в отношении glibc) это более чем вероятно. Во всяком случае, я много раз обновлял разные библиотеки и в общем, перекомпиляции обычно не требуется.

Опубликовано

во-первых, если Вы собираетесь статически линковать GPL либы, то свою программу тоже обязаны отдавать под GPL

внимательно перечитывайте лицензии GPL и LGPL

во-вторых, если Вы делаете серьезный коммерческий продукт, то боязаны осуществлять его поддержку. И выложить несколько бинарей для разных либ, или пересобрать программу, исли появятся новые версии, несовместимые со старыми, imho, не такой уж и большой труд, особенно учитывая, что за это Вы получаете деньги Smile

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

Загрузка...
×
×
  • Создать...