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

Как скомпилировать?


Гость

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

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

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

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

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

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

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

40Kb

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

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

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

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

Ссылка на комментарий
Поделиться на другие сайты

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

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

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

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

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

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

40Kb

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

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

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

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

Ссылка на комментарий
Поделиться на другие сайты

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

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

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

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

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

Ссылка на комментарий
Поделиться на другие сайты

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

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

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

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

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

Ссылка на комментарий
Поделиться на другие сайты

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

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

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

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

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

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

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

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

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

Ссылка на комментарий
Поделиться на другие сайты

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

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

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

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

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

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

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

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

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

Ссылка на комментарий
Поделиться на другие сайты

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

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

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

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

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

что и hello-world.

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

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

Ссылка на комментарий
Поделиться на другие сайты

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

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

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

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

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

что и hello-world.

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

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

Ссылка на комментарий
Поделиться на другие сайты

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

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

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

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

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

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

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

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

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

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

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

Ссылка на комментарий
Поделиться на другие сайты

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

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

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

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

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

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

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

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

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

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

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

Ссылка на комментарий
Поделиться на другие сайты

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

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

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

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

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

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

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

Ссылка на комментарий
Поделиться на другие сайты

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

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

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

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

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

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

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

Ссылка на комментарий
Поделиться на другие сайты

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

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

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

снимаются. Smile

Ссылка на комментарий
Поделиться на другие сайты

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

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

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

снимаются. Smile

Ссылка на комментарий
Поделиться на другие сайты

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

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

Ссылка на комментарий
Поделиться на другие сайты

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

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

Ссылка на комментарий
Поделиться на другие сайты

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

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

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

Ссылка на комментарий
Поделиться на другие сайты

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

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

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

Ссылка на комментарий
Поделиться на другие сайты

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

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

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

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

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

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

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

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

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