LINUX.ORG.RU

Кросс-компилятор


0

0

Существует ли такой, и если да, то где?

У меня есть прога, написанная на С++ в RH 7.2 . Прога обыкновенная, консольная, ничего Linux-спецефичного в ней нет. И есть у меня где-то юзерство на freeBSD, а компилировать там мне запретили(всем запретили...), только запускать. Так вот, не сущ-ет ли такого компилятора, который будучи установленным на RH выплевывал бы freeBSD бинарники, а?


Re:

В качестве варианта можно установить на FBSD поддержку Linux и собирать всё по старинке.

Но скорее всего можно ограничиться ковырянием linker script и копированием на Linux ряда библиотек FBSD.

Murr ★★
()
Ответ на: комментарий от dilmah

>собирать gcc нужно..
Скорее binutils.

Хотя я и без этого собрал для BSD "hello, world!"
gcc -c hello.c
ld -I/usr/libexec/ld-elf.so.1 hello.o -lcbsd -emain

(предварительно скопировав libc.so.4 -> /lib, ln -s libc.so.4 libcbsd.so и определив несколько environ и __progname в hello.c).

Murr ★★
()
Ответ на: комментарий от Murr

А можно ли поподробнее

, что это такое "libc.so.4", чем оно отличается от "libc.so.1" и где это взять? что делает команда "ln -s libc.so.4 libcbsd.so"? Какие переменные окружения устанавливать? Приведите пожалста также текст проги hello.c, чтоб ясно стало где и как стоит __progname

?

szzz
() автор топика
Ответ на: А можно ли поподробнее от szzz

libc.so.4 это 4-я версия стандартной библиотеки C
ln -s libc.so.4 libcbsd.so - man ln
__progname - есть такие функции в libc FreeBSD 4.4 и выше:
const char* getprogname(void);
void setprogname(const char*);
читающие/устанавливающие имя программы, которое доступно также, как
extern const char* __progname;
В libc Linux такого нет, поэтому переменную придётся создать самому. Подробнее RTFM on FreeBSD.

loki
()
Ответ на: комментарий от loki

Прекрасно! а где раздобыть libc.so.4 для freebSD? Что-то я ищу-ищу - не найду...

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