Есть объектные файлы Linux, компоновка в Linux-е работает: aix> gcc -o hello obj/hello.o /usr/local/s/lib/x86/libs.a -lm
(после этого программа hello запускается и работает без ошибок)
Чтобы скомпоновать в FreeBSD, нужно указать компоновщику использовать библиотеки libc и libm из Linux, а не из FreeBSD.
Пробую так: aix> gcc -o hello obj/hello.o /usr/local/s/lib/x86/libs.a /compat/linux/lib/libc.so.5 /compat/linux/lib/libm.so.6
Получаю:
/usr/lib/libc.so: warning: the `gets' function is dangerous and should not be used.
/usr/lib/libc.so: warning: `sys_nerr' is deprecated; use `strerror' or `strerror_r' instead
/usr/lib/libc.so: warning: the use of `mktemp' is dangerous, better use `mkstemp'
/usr/lib/libc.so: warning: warning: chflags is not implemented and will always fail
/usr/lib/libc.so: warning: warning: fchflags is not implemented and will always fail
/usr/lib/libc.so: warning: warning: lchmod is not implemented and will always fail
/usr/lib/libc.so: warning: warning: revoke is not implemented and will always fail
/usr/lib/libc.so: warning: warning: sigreturn is not implemented and will always fail
/usr/lib/libc.so: warning: `sys_errlist' is deprecated; use `strerror' or `strerror_r' instead
/usr/lib/libc.so: warning: the use of `tmpnam' is dangerous, better use `mkstemp'
/usr/lib/libc.so: warning: warning: futimes is not implemented and will always fail
/usr/lib/libc.so: warning: warning: lutimes is not implemented and will always fail
/usr/lib/libc.so: warning: the use of `tempnam' is dangerous, better use `mkstemp'
/usr/lib/libc.so: warning: the `getwd' function is dangerous and should not be used.
/usr/lib/libc.so: warning: warning: setlogin is not implemented and will always fail
(после запуска hello получаю Segmentation fault)
Т.е. всё-таки при компоновке используется FreeBSD-версия libc.
Как указать компоновщику использовать Linux-версию libc, которая находится в /compat/linux/lib ?
garikus
Есть объектные файлы Linux, компоновка в Linux-е работает:aix> gcc -o hello obj/hello.o /usr/local/s/lib/x86/libs.a -lm
(после этого программа hello запускается и работает без ошибок)
Чтобы скомпоновать в FreeBSD, нужно указать компоновщику использовать библиотеки libc и libm из Linux, а не из FreeBSD.
Пробую так:
aix> gcc -o hello obj/hello.o /usr/local/s/lib/x86/libs.a /compat/linux/lib/libc.so.5 /compat/linux/lib/libm.so.6
Получаю:
/usr/lib/libc.so: warning: the `gets' function is dangerous and should not be used.
/usr/lib/libc.so: warning: `sys_nerr' is deprecated; use `strerror' or `strerror_r' instead
/usr/lib/libc.so: warning: the use of `mktemp' is dangerous, better use `mkstemp'
/usr/lib/libc.so: warning: warning: chflags is not implemented and will always fail
/usr/lib/libc.so: warning: warning: fchflags is not implemented and will always fail
/usr/lib/libc.so: warning: warning: lchmod is not implemented and will always fail
/usr/lib/libc.so: warning: warning: revoke is not implemented and will always fail
/usr/lib/libc.so: warning: warning: sigreturn is not implemented and will always fail
/usr/lib/libc.so: warning: `sys_errlist' is deprecated; use `strerror' or `strerror_r' instead
/usr/lib/libc.so: warning: the use of `tmpnam' is dangerous, better use `mkstemp'
/usr/lib/libc.so: warning: warning: futimes is not implemented and will always fail
/usr/lib/libc.so: warning: warning: lutimes is not implemented and will always fail
/usr/lib/libc.so: warning: the use of `tempnam' is dangerous, better use `mkstemp'
/usr/lib/libc.so: warning: the `getwd' function is dangerous and should not be used.
/usr/lib/libc.so: warning: warning: setlogin is not implemented and will always fail
(после запуска hello получаю Segmentation fault)
Т.е. всё-таки при компоновке используется FreeBSD-версия libc.
Как указать компоновщику использовать Linux-версию libc, которая находится в /compat/linux/lib ?