Вопрос

Пытаясь запустить мою программу в ОС FreeBSD, я получаю следующие результаты:

$ ./myprogram

ELF binary type "0" not known

./myprogram: 1: Syntax error: "&" unexpected (expecting ")")

$ file myprogram

myprogram: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), 

dynamically linked (uses shared libs), for GNU/Linux 2.6.15, 

not stripped

Программа встроена в GCC на компьютере Ubuntu.Что я могу сделать?Могу ли я собрать программу для FreeBSD на моем компьютере Ubuntu, изменив некоторые параметры сборки, или мне нужно собрать ее в ОС FreeBSD?Может быть, есть какой-то способ преобразовать исполняемый файл в формат, распознаваемый FreeBSD?

Это было полезно?

Решение

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

В наши дни BSD поставляется с ABI (Application Binary Interface) для Linux, который будет переводить системные вызовы Linux "на лету" (во многом так работает WINE).Это позволит вам запускать двоичные файлы Linux ELF в системах BSD с небольшим снижением производительности.

При этом это не одна и та же операционная система, и лучше всего было бы скомпилировать ее для целевой системы либо путем получения к ней доступа, либо с помощью метода перекрестной компиляции.

Другие советы

Вы можете запускать множество программ Linux на FreeBSD, см. http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/linuxemu.html.

Если это не сработает, самым простым решением было бы перекомпилировать вашу программу на FreeBSD.

Попробуйте заклеймить исполняемый файл как исполняемый файл Linux с помощью brandelf (хотя вам все еще нужна настройка всех зависимых библиотек, или попробуйте связать его статически

http://www.freebsd.org/cgi/man.cgi ?запрос=brandelf&apropos=0&раздел=0&manpath=FreeBSD+8.0-RELEASE&формат=html

назовите себя "Linux", и это должно сработать.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top