BSDPORTAL.RU

На этом сайте обсуждаются вопросы использования ОС FreeBSD
 Портал  •  Статьи  •  Форум  •  Wiki  •  Поиск  •  FAQ  •  Обои  •   Официальная документация  •  Новые темы 

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 14 ] 
Автор Сообщение
СообщениеДобавлено: Вт 08 дек, 2015 12:34 pm 
Не в сети

Зарегистрирован: Вт 08 дек, 2015 12:12 pm
Сообщения: 10
в общем такое дело, есть приложение(там 2 микросервера с обменом по TPC\IP и модуль ядра который общается с нестандартным железом) которое мы разрабатывали под линукс. возникла нужда перенести его на платформу FreeBSD 10.2(версию честно говоря брали просто посвежее).

сразу повылазила куча граблей и вопросов:

-в нетбинсе 8.2(рабочая среда под которой разрабатывали наше приложение под линукс) терминал ничего не выводит, во время запуска приложения, ни по русски ни по английскии. терминал в нетбинсе настроен под UTF8. если запускать скомпилированное приложение из консоли виртуальной машины - все сообщения отображаются нормально.
-при компиляции модулей приложения ссылки на заголовочные файлы - другие, может можно компилятору указать просто путь на линкусовые заголовочные файлы? для совместимости.
-засада с модулем ядра: при попытке скомпилить образец модуля ядра из руководства разработчика FreeBSD, все компилится, но не устанавливается - говорит версии не совместимы. попытался пересобрать мир и ядро чтобы устранить эту ошибку. не смог - ошибка при компиляции
--------------------------------------------------------------
>>> stage 4.2: building libraries
--------------------------------------------------------------
===> gnu/lib/libssp/libssp_nonshared (obj,depend,all,install)
===> gnu/lib/libgcc (obj,depend,all,install)
===> lib/libcompiler_rt (obj,depend,all,install)
===> gnu/lib/csu (obj,depend,all,install)
===> lib/csu/i386-elf (obj,depend,all,install)
===> lib/libc (obj,depend,all,install)
===> lib/libcompiler_rt (obj,depend,all,install)
===> lib/libc_nonshared (obj,depend,all,install)
In file included from /usr/src/lib/libc_nonshared/../libc/iconv/__iconv.c:30:
In file included from /usr/obj/usr/src/tmp/usr/include/iconv.h:38:
In file included from /usr/obj/usr/src/tmp/usr/include/wchar.h:228:
/usr/obj/usr/src/tmp/usr/include/xlocale/_wchar.h:91:2: error: #endif without #if
#endif /* _XLOCALE_WCHAR_H */
^
/usr/obj/usr/src/tmp/usr/include/xlocale/_wchar.h:92:2: error: #endif without #if
#endif /* _XLOCALE_H_ */
^
2 errors generated.
In file included from /usr/src/lib/libc_nonshared/../libc/iconv/__iconv_free_list.c:30:
In file included from /usr/obj/usr/src/tmp/usr/include/iconv.h:38:
In file included from /usr/obj/usr/src/tmp/usr/include/wchar.h:228:
/usr/obj/usr/src/tmp/usr/include/xlocale/_wchar.h:91:2: error: #endif without #if
#endif /* _XLOCALE_WCHAR_H */
^
/usr/obj/usr/src/tmp/usr/include/xlocale/_wchar.h:92:2: error: #endif without #if
#endif /* _XLOCALE_H_ */
^
2 errors generated.
In file included from /usr/src/lib/libc_nonshared/../libc/iconv/__iconv_get_list.c:30:
In file included from /usr/obj/usr/src/tmp/usr/include/iconv.h:38:
In file included from /usr/obj/usr/src/tmp/usr/include/wchar.h:228:
/usr/obj/usr/src/tmp/usr/include/xlocale/_wchar.h:91:2: error: #endif without #if
#endif /* _XLOCALE_WCHAR_H */
^
/usr/obj/usr/src/tmp/usr/include/xlocale/_wchar.h:92:2: error: #endif without #if
#endif /* _XLOCALE_H_ */
^
2 errors generated.
In file included from /usr/src/lib/libc_nonshared/../libc/iconv/iconv.c:30:
In file included from /usr/obj/usr/src/tmp/usr/include/iconv.h:38:
In file included from /usr/obj/usr/src/tmp/usr/include/wchar.h:228:
/usr/obj/usr/src/tmp/usr/include/xlocale/_wchar.h:91:2: error: #endif without #if
#endif /* _XLOCALE_WCHAR_H */
^
/usr/obj/usr/src/tmp/usr/include/xlocale/_wchar.h:92:2: error: #endif without #if
#endif /* _XLOCALE_H_ */
^
2 errors generated.
In file included from /usr/src/lib/libc_nonshared/../libc/iconv/iconv_canonicalize.c:30:
In file included from /usr/obj/usr/src/tmp/usr/include/iconv.h:38:
In file included from /usr/obj/usr/src/tmp/usr/include/wchar.h:228:
/usr/obj/usr/src/tmp/usr/include/xlocale/_wchar.h:91:2: error: #endif without #if
#endif /* _XLOCALE_WCHAR_H */
^
/usr/obj/usr/src/tmp/usr/include/xlocale/_wchar.h:92:2: error: #endif without #if
#endif /* _XLOCALE_H_ */
^
2 errors generated.
In file included from /usr/src/lib/libc_nonshared/../libc/iconv/iconv_close.c:30:
In file included from /usr/obj/usr/src/tmp/usr/include/iconv.h:38:
In file included from /usr/obj/usr/src/tmp/usr/include/wchar.h:228:
/usr/obj/usr/src/tmp/usr/include/xlocale/_wchar.h:91:2: error: #endif without #if
#endif /* _XLOCALE_WCHAR_H */
^
/usr/obj/usr/src/tmp/usr/include/xlocale/_wchar.h:92:2: error: #endif without #if
#endif /* _XLOCALE_H_ */
^
2 errors generated.
In file included from /usr/src/lib/libc_nonshared/../libc/iconv/iconv_open.c:30:
In file included from /usr/obj/usr/src/tmp/usr/include/iconv.h:38:
In file included from /usr/obj/usr/src/tmp/usr/include/wchar.h:228:
/usr/obj/usr/src/tmp/usr/include/xlocale/_wchar.h:91:2: error: #endif without #if
#endif /* _XLOCALE_WCHAR_H */
^
/usr/obj/usr/src/tmp/usr/include/xlocale/_wchar.h:92:2: error: #endif without #if
#endif /* _XLOCALE_H_ */
^
2 errors generated.
In file included from /usr/src/lib/libc_nonshared/../libc/iconv/iconv_open_into.c:30:
In file included from /usr/obj/usr/src/tmp/usr/include/iconv.h:38:
In file included from /usr/obj/usr/src/tmp/usr/include/wchar.h:228:
/usr/obj/usr/src/tmp/usr/include/xlocale/_wchar.h:91:2: error: #endif without #if
#endif /* _XLOCALE_WCHAR_H */
^
/usr/obj/usr/src/tmp/usr/include/xlocale/_wchar.h:92:2: error: #endif without #if
#endif /* _XLOCALE_H_ */
^
2 errors generated.
In file included from /usr/src/lib/libc_nonshared/../libc/iconv/iconv_set_relocation_prefix.c:30:
In file included from /usr/obj/usr/src/tmp/usr/include/iconv.h:38:
In file included from /usr/obj/usr/src/tmp/usr/include/wchar.h:228:
/usr/obj/usr/src/tmp/usr/include/xlocale/_wchar.h:91:2: error: #endif without #if
#endif /* _XLOCALE_WCHAR_H */
^
/usr/obj/usr/src/tmp/usr/include/xlocale/_wchar.h:92:2: error: #endif without #if
#endif /* _XLOCALE_H_ */
^
2 errors generated.
In file included from /usr/src/lib/libc_nonshared/../libc/iconv/iconvctl.c:30:
In file included from /usr/obj/usr/src/tmp/usr/include/iconv.h:38:
In file included from /usr/obj/usr/src/tmp/usr/include/wchar.h:228:
/usr/obj/usr/src/tmp/usr/include/xlocale/_wchar.h:91:2: error: #endif without #if
#endif /* _XLOCALE_WCHAR_H */
^
/usr/obj/usr/src/tmp/usr/include/xlocale/_wchar.h:92:2: error: #endif without #if
#endif /* _XLOCALE_H_ */
^
2 errors generated.
In file included from /usr/src/lib/libc_nonshared/../libc/iconv/iconvlist.c:30:
In file included from /usr/obj/usr/src/tmp/usr/include/iconv.h:38:
In file included from /usr/obj/usr/src/tmp/usr/include/wchar.h:228:
/usr/obj/usr/src/tmp/usr/include/xlocale/_wchar.h:91:2: error: #endif without #if
#endif /* _XLOCALE_WCHAR_H */
^
/usr/obj/usr/src/tmp/usr/include/xlocale/_wchar.h:92:2: error: #endif without #if
#endif /* _XLOCALE_H_ */
^
2 errors generated.
mkdep: compile failed
--- .depend ---
*** [.depend] Error code 1

make[4]: stopped in /usr/src/lib/libc_nonshared
1 error

make[4]: stopped in /usr/src/lib/libc_nonshared
--- lib/libc_nonshared__L ---
*** [lib/libc_nonshared__L] Error code 2

make[3]: stopped in /usr/src
A failure has been detected in another branch of the parallel make

make[4]: stopped in /usr/src/gnu/lib/csu
--- gnu/lib/csu__L ---
*** [gnu/lib/csu__L] Error code 2

make[3]: stopped in /usr/src
A failure has been detected in another branch of the parallel make

make[4]: stopped in /usr/src/lib/libc
--- lib/libc__L ---
*** [lib/libc__L] Error code 2

make[3]: stopped in /usr/src
3 errors

make[3]: stopped in /usr/src
--- libraries ---
*** [libraries] Error code 2

make[2]: stopped in /usr/src
1 error

make[2]: stopped in /usr/src
--- _libraries ---
*** [_libraries] Error code 2

make[1]: stopped in /usr/src
1 error

make[1]: stopped in /usr/src
--- buildworld ---
*** [buildworld] Error code 2

make: stopped in /usr/src
1 error

make: stopped in /usr/src

-засада с мейками: в линуксе стандарт gmake а во FreeBSD make. у них разные синтаксисы, можно ли как нибуть сделать что то типа "гибридного" мейк файла, в котором вызовы были обоих мейков возможны?
- если не парится с компиляцией модуля ядра, а взять линуксовый скомпиленный, можно ли его подсунуть Фряхе и каким образом?

ребят сильно ногами не пинайте, первый проект под BSD.

Пользуйтесь спойлером


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вт 08 дек, 2015 2:11 pm 
Не в сети
Модератор

Зарегистрирован: Сб 11 сен, 2004 6:33 am
Сообщения: 5081
Откуда: Москва
vasja писал(а):
-при компиляции модулей приложения ссылки на заголовочные файлы - другие

На какие именно заголовочные файлы? Для userland приложений инклуды должны быть те же самые (потому что posix), если вы не используете ничего linux-специфичного.

vasja писал(а):
может можно компилятору указать просто путь на линкусовые заголовочные файлы? для совместимости.

Нет.

vasja писал(а):
-засада с модулем ядра: при попытке скомпилить образец модуля ядра из руководства разработчика FreeBSD, все компилится, но не устанавливается - говорит версии не совместимы

Версия исходников в /usr/src должна совпадать с версией системы. Откуда вы брали исходники?

vasja писал(а):
попытался пересобрать мир и ядро чтобы устранить эту ошибку. не смог - ошибка при компиляции

Не надо для того чтобы привести исходники в соответствие системе пересобирать систему исходников неизвестно какой версии.

vasja писал(а):
-засада с мейками: в линуксе стандарт gmake а во FreeBSD make. у них разные синтаксисы, можно ли как нибуть сделать что то типа "гибридного" мейк файла, в котором вызовы были обоих мейков возможны?

Для простых случаев можно, на базовом уровне (переменные/цели/зависимости, но не управляющие конструкции, внутренние переменные и модификаторы) они совместимы.

vasja писал(а):
- если не парится с компиляцией модуля ядра, а взять линуксовый скомпиленный, можно ли его подсунуть Фряхе и каким образом?

Нет.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вт 08 дек, 2015 2:33 pm 
Не в сети

Зарегистрирован: Вт 08 дек, 2015 12:12 pm
Сообщения: 10
Цитата:
Версия исходников в /usr/src должна совпадать с версией системы. Откуда вы брали исходники?

svn checkout http://svn.freebsd.org/base/releng/10.2/ /usr/src

Цитата:
Не надо для того чтобы привести исходники в соответствие системе пересобирать систему исходников неизвестно какой версии.

образ системы брал с freebsd.org, собирал мир из исходников которые установил вместе с системой.
второй раз обновил свном сорцы для установленной версии. выше указал какой командой обновлял сорцы. директорию /usr/src/ перед этим очистил. может с ключом каким собрать, чтобы он мелкие ошибки игнорил? или какие есть еще варианты?

Цитата:
Для простых случаев можно, на базовом уровне (переменные/цели/зависимости, но не управляющие конструкции, внутренние переменные и модификаторы) они совместимы.


да хотя бы команду include персонифицировать под конкретный мейк. чтобы вложенные файлы с разным синтаксисом не переделывать.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вт 08 дек, 2015 2:52 pm 
Не в сети
Модератор

Зарегистрирован: Сб 11 сен, 2004 6:33 am
Сообщения: 5081
Откуда: Москва
vasja писал(а):
директорию /usr/src/ перед этим очистил. может с ключом каким собрать, чтобы он мелкие ошибки игнорил? или какие есть еще варианты?

Я не до конца понял что у вас в итоге получилось.

Вот это
Код:
grep "define __FreeBSD_ver" /usr/include/sys/param.h /usr/src/sys/sys/param.h

должно совпадать. При сборке модуля с новыми исходниками сначала нужно сделать make clean.

vasja писал(а):
да хотя бы команду include персонифицировать под конкретный мейк. чтобы вложенные файлы с разным синтаксисом не переделывать.

Команда include у gmake и bmake разная. Вы можете сделать разные файлы, GNUmakefile и BSDmakefile, с разным синтаксисом. При этом в них можно включать одни и те же файлы с совместимым синтаксисом. Но вообще когда нужны такие вещи, берут более высокоуровневую сборочную систему типа autotools или cmake.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вт 08 дек, 2015 3:03 pm 
Не в сети

Зарегистрирован: Вт 08 дек, 2015 12:12 pm
Сообщения: 10
не совпадает:
[root@asdzx ~]# grep "define __FreeBSD_ver" /usr/include/sys/param.h /usr/src/sys/sys/param.h
/usr/include/sys/param.h:#define __FreeBSD_version 1002501 /* Master, propagated to newvers */
/usr/src/sys/sys/param.h:#define __FreeBSD_version 1002000 /* Master, propagated to newvers */

как лечить? достаточно ли make clean /usr/src/? и почему сорцы скачанные для моего релиза не совпадают?

Цитата:
Команда include у gmake и bmake разная. Вы можете сделать разные файлы, GNUmakefile и BSDmakefile, с разным синтаксисом. При этом в них можно включать одни и те же файлы с совместимым синтаксисом. Но вообще когда нужны такие вещи, берут более высокоуровневую сборочную систему типа autotools или cmake


спасибо, погуглю.

Цитата:
vasja писал(а):
-при компиляции модулей приложения ссылки на заголовочные файлы - другие
Цитата:
На какие именно заголовочные файлы? Для userland приложений инклуды должны быть те же самые (потому что posix), если вы не используете ничего linux-специфичного.


например сокеты лежат в другом месте:
Код:
#ifdef __FreeBSD__
#include <sys/socket.h>
#endif /* FreeBSD */


Последний раз редактировалось vasja Вт 08 дек, 2015 3:13 pm, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вт 08 дек, 2015 3:06 pm 
Не в сети
Модератор

Зарегистрирован: Сб 11 сен, 2004 6:33 am
Сообщения: 5081
Откуда: Москва
vasja писал(а):
как лечить? достаточно ли make clean /usr/src/? и почему сорцы скачанные для моего релиза не совпадают?

Потому что у вас не 10.2-RELEASE, а 10-STABLE. Ставить релиз и исходники от релиза.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вт 08 дек, 2015 3:14 pm 
Не в сети
Модератор

Зарегистрирован: Сб 11 сен, 2004 6:33 am
Сообщения: 5081
Откуда: Москва
vasja писал(а):
например сокеты лежат в другом месте:
Код:
#ifdef __FreeBSD__
#include <sys/socket.h>
#endif /* FreeBSD */

Нет. http://man7.org/linux/man-pages/man2/socket.2.html


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вт 08 дек, 2015 3:17 pm 
Не в сети

Зарегистрирован: Вт 08 дек, 2015 12:12 pm
Сообщения: 10
Цитата:
Потому что у вас не 10.2-RELEASE, а 10-STABLE. Ставить релиз и исходники от релиза.

спасибо.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вт 08 дек, 2015 3:19 pm 
Не в сети

Зарегистрирован: Вт 08 дек, 2015 12:12 pm
Сообщения: 10
Нет. http://man7.org/linux/man-pages/man2/socket.2.html

странно. у меня не компилилось пока ссылку не поменял, посмотрю позже внимательней.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вт 08 дек, 2015 5:21 pm 
Не в сети

Зарегистрирован: Чт 14 май, 2009 6:56 pm
Сообщения: 729
Касательно мейкфайлов - нельзя просто gmake'ом из портов собирать?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вт 08 дек, 2015 6:21 pm 
Не в сети
Модератор

Зарегистрирован: Сб 11 сен, 2004 6:33 am
Сообщения: 5081
Откуда: Москва
Я не стал это предлагать потому что если собирать gmake'ом, нельзя будет использовать системные mk файлы которыми обычно собираются ядерные модули (как в примере из arch handbook) т.к. они с gmake несовместимы. А без этих mk файлов не от куда получить флаги нужные для сборки модуля.

Я бы взял cmake, в нём реализовал всю конфигурацию, сборку userland приложения, тесты и т.д., а модули - каждый использует свою родную сборочную инфраструктуру, которая вызывается из cmake (add_custom_command). Похоже что примерно так сделан net/userfw.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вт 08 дек, 2015 7:13 pm 
Не в сети

Зарегистрирован: Чт 14 май, 2009 6:56 pm
Сообщения: 729
Я имел ввиду, собирать gmake'ом само приложение. Модуль ядра один фиг переписывать, и систему сборки, и сам код.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вт 08 дек, 2015 7:19 pm 
Не в сети
Модератор

Зарегистрирован: Сб 11 сен, 2004 6:33 am
Сообщения: 5081
Откуда: Москва
Это можно, да.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Ср 09 дек, 2015 9:21 am 
Не в сети

Зарегистрирован: Вт 08 дек, 2015 12:12 pm
Сообщения: 10
arrowdodger писал(а):
Я имел ввиду, собирать gmake'ом само приложение. Модуль ядра один фиг переписывать, и систему сборки, и сам код.

так я его так и собираю из-за модуля ядра и возник вопрос с мейками. т.к. gmake не прожевал bsd.kmod.mk.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 14 ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Зарегистрированные пользователи: Bing [Bot], Google [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB
Яндекс.Метрика