Секреты компиляции (или просто баг)

Модератор: Модераторы разделов

Аватара пользователя
Amnesiac1989
Сообщения: 26
ОС: Debian Etch, Fedora 8

Секреты компиляции

Сообщение Amnesiac1989 »

Доброго времени суток всем!
Помогите пожалуйста разобраться со следующей ситуацией:
Компилирую самый примитивный HelloWorld

Код: Выделить всё

gcc hello.c -o hello

запускаю, и всё работает (Fedora 8)

Запускаю скомпилированную программу в Knoppix 5, выдает floating point exception.
Компилирую этот же исходник в Knoppix, работает. Запускаю скомпилированную в Knoppix программу в Федоре - тоже работает!

Почему тогда в первом случае - ошибка?
"I'm not afraid of being taken by computers though... because they're totally defenseless.
All we need is more people with hammers."
- Thom Yorke
Спасибо сказали:
Serik
Сообщения: 149
ОС: SuSE Linux

Re: Секреты компиляции

Сообщение Serik »

Динамическая компиляция, программа во время работы использует системные библиотеки.
У этих библиотек есть бинарный API, который и различается.
Спасибо сказали:
Аватара пользователя
Amnesiac1989
Сообщения: 26
ОС: Debian Etch, Fedora 8

Re: Секреты компиляции

Сообщение Amnesiac1989 »

Хм... Странно, как же тогда приложения с закрытым кодом распространяются?))
В Ubuntu 7.10, например, этот ХеллоВорлд включился нормально, даже после добавления в него окна на GTK+
"I'm not afraid of being taken by computers though... because they're totally defenseless.
All we need is more people with hammers."
- Thom Yorke
Спасибо сказали:
Serik
Сообщения: 149
ОС: SuSE Linux

Re: Секреты компиляции

Сообщение Serik »

Amnesiac1989 писал(а):
30.01.2008 13:12
Хм... Странно, как же тогда приложения с закрытым кодом распространяются?))

1) сборки под конкретные дистрибутивы
2) статическая компоновка
Спасибо сказали:
netguard
Сообщения: 30

Re: Секреты компиляции

Сообщение netguard »

3) Дин. библиотеки, которые можно подсунуть через LD_PATH_LIBRARY.
Спасибо сказали:
Аватара пользователя
Amnesiac1989
Сообщения: 26
ОС: Debian Etch, Fedora 8

Re: Секреты компиляции

Сообщение Amnesiac1989 »

...а теперь глупый вопрос - какими параметрами надо травить GCC, чтобы осуществить статическую компоновку?

И ещё - библиотека GTK вроде не прикручивается статически
"I'm not afraid of being taken by computers though... because they're totally defenseless.
All we need is more people with hammers."
- Thom Yorke
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: Секреты компиляции

Сообщение serzh-z »

Amnesiac1989, -static
Спасибо сказали:
netguard
Сообщения: 30

Re: Секреты компиляции

Сообщение netguard »

glibc тоже статически не вся прикручивается. Иногда может потребоватся перенести ее дин. библиотеки. Особенно когда потоки используются, такие глюки могут пойти - хуже не придумаешь.
Спасибо сказали:
Аватара пользователя
Amnesiac1989
Сообщения: 26
ОС: Debian Etch, Fedora 8

Re: Секреты компиляции

Сообщение Amnesiac1989 »

После добавления -static масса ХеллоВорлда увеличилась на несколько порядков, но лучше он от этого не стал)))
При попытке его (собирал в федоре) запустить в старом Feather Linux последний мне выдал, что у него устарело ядро...
При этом версия ХеллоВорлда, собранная в Knoppix, работает в Feather на ура

Может всё дело в версии GCC, который поставляется с Федорой 8?
"I'm not afraid of being taken by computers though... because they're totally defenseless.
All we need is more people with hammers."
- Thom Yorke
Спасибо сказали:
Аватара пользователя
serzh-z
Бывший модератор
Сообщения: 8259
Статус: Маньяк
ОС: Arch, Fedora, Ubuntu

Re: Секреты компиляции

Сообщение serzh-z »

Amnesiac1989 писал(а):
30.01.2008 17:41
что у него устарело ядро...
Ничего удивительного... Код, который был статически слинкован с helloworld, зависит от системных вызовов ядра.
Спасибо сказали: