LINUX.ORG.RU

Re: Как скомпилировать в Linuxe программу на C, чтобы она работала во FreeBSD?

это а у freebsd какой стандарт на бинарники ?

Aleks_IZA ()

Re: Как скомпилировать в Linuxe программу на C, чтобы она работала во FreeBSD?

Дело в том, что:
1. У FreeBSD, как и у остальных BSD файловая система стандарта 4.2BSD.
2. У всех BSD формат исполнимых (executable) файлов отличный от Linuxового POSIX - 4.2BSD.
Так что проще всего перенести все исходники, а также makefile с Linuxa на FreeBSD, и компильнуть все на месте. Конечно, могут возникнуть некоторые проблемы, если ты в Linuxe используешь какие-нить ф-ции стандарта, например POSIX, которые не поддерживает 4.2BSD. Но, в этом случае, можно позаимствовать Linuxовые исходники этих ф-ций и скомпилить и их на FreeBSD.

Akan ()

Re: Как скомпилировать в Linuxe программу на C, чтобы она работала во FreeBSD?

Чего то вы гоните, ребята.
Файловая система - UFS.
Формат бинарника - ELF.
Если стоит во фре эмуляция линукса, то в большинстве случаев прога работает без проблем.
Фактически, эмулируются только небольшое кол-во системных вызовов.
Также желательно поставить linuxthreads и linux_devtools.
При наличии последнего пакета можно на фре собирать линуксовые бинарники.
Эмулируется ядро 2.2.x. У меня пакет старый, и поэтому у меня эмуляция 2.2.12.
Может в более свежем эмуляторе ядро поновее.

Havoc ★★★★ ()

Re: Как скомпилировать в Linuxe программу на C, чтобы она работала во FreeBSD?

2Havoc
Ну, по поводу UFS - это да, только я сказал что система СТАНДАРТА 4.2BSD, а по поводу названия файловой системы ничего не говорил. :)
А по поводу эльфов - они хоть и эльфы, но разные. Исполнимые файлы в обеих операционках начинаются на " ELF", но дальше у них формат разный. И когда зааускаешь исполнимый файл Линукса на Фре - он говорит, что ELF интерпретер не найден (потому что он ищет свой Линуксовый интерпретатор). То же самое происходит, когда запускаешь Фрешные "экзешники" под, например RedHat.

Akan ()

Re: Как скомпилировать в Linuxe программу на C, чтобы она работала во FreeBSD?

2 Akan : Ты про эмуляцию линукса во фре слышал?
Интересно, каким образом у меня работает линуксовый SybSQL, собранный
на линуксе и поставленный из _готовых_ бинарников? Никаких спец действий
делать не пришлось.
Всего-то надо поставить эмуляцию и включить ее.
Эмулятор живет в кернельном модуле.
Да и файловая система сздесь не причем. Файловые вызовы фришное ядро само
обрабатывает.

Havoc ★★★★ ()

Re: Как скомпилировать в Linuxe программу на C, чтобы она работала во FreeBSD?

Да и старофис линуксовый шуршит без проблем.
ELF-ы фактически мало чем различаются.
Для большего спокойствия brandelf-ом можешь явно указать, от какой системы бинарник.

Havoc ★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.