Сборка Virtuoso (с интеграцией Mono) в Ubuntu: ошибка сборки на libgc

ОБНОВЛЕНИЕ: Хорошо, я нашел это на эта страница: вам нужно запустить ./configure с параметром —enable-mono. Затем вы также обнаружите, что отсутствуют еще некоторые зависимости, которые нигде не упоминаются.

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

После выполнения ./autogen и ./configure —enable_mono (попробовав его в ветвях кода, разработайте / 6 и разработайте / 7), я получаю следующую ошибку:

libtool: compile:  gcc -DHAVE_CONFIG_H -I. -I../../libsrc/Dk -fno-strict-aliasing -O2 -DMONO_USE_EXC_TABLES -fexceptions -D_REENTRANT -D_GNU_SOURCE -Wall -DNDEBUG -DPOINTER_64 -I/usr/local/src/virtuoso-opensource/libsrc/Xml.new -DOPENSSL_NO_KRB5 -Dlinux -D_GNU_SOURCE -DFILE64 -D_LARGEFILE64_SOURCE -I../../binsrc/mono/mono-1.1.7/libgc/include -I../../libsrc -I../../libsrc/Dk -DNO_UDBC_SDK -DUSE_INCLUDED_LIBGC=1 -g -O2 -MT libthrp_gc_la-sched_pthread_gc.lo -MD -MP -MF .deps/libthrp_gc_la-sched_pthread_gc.Tpo -c sched_pthread_gc.c  -fPIC -DPIC -o .libs/libthrp_gc_la-sched_pthread_gc.o
sched_pthread_gc.c:42:22: fatal error: gc_typed.h: No such file or directory
compilation terminated.
make[2]: *** [libthrp_gc_la-sched_pthread_gc.lo] Error 1
make[2]: Leaving directory `/usr/local/src/virtuoso-opensource/libsrc/Thread'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/usr/local/src/virtuoso-opensource/libsrc'
make: *** [all-recursive] Error 1

Эта ссылка содержит содержимое проблемного файла. Если я удаляю импорт для gc_typed.h, следующий импорт не найден. я только что сделал sudo apt-get install libgc-dev который работал. Make все равно дает мне ту же ошибку. Я полагаю, что где-то вокруг этого файла и этой компиляции ошибка похоронена, но я не могу это исправить.

Я Linux noob, может кто-нибудь дать мне совет, что может быть проблема здесь или как ее решить?

Дополнительная информация:
1. ldconfig -v -p ясно говорит, что libgc.so существует, так почему этот скрипт make ищет заголовок?

...
libgdbm_compat.so.3 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libgdbm_compat.so.3
libgdbm.so.3 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libgdbm.so.3
libgd.so.2 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libgd.so.2
libgcrypt.so.11 (libc6,x86-64) => /lib/x86_64-linux-gnu/libgcrypt.so.11
libgccpp.so.1 (libc6,x86-64) => /usr/lib/libgccpp.so.1
libgccpp.so (libc6,x86-64) => /usr/lib/libgccpp.so
libgcc_s.so.1 (libc6,x86-64) => /lib/x86_64-linux-gnu/libgcc_s.so.1
libgc.so.1 (libc6,x86-64) => /usr/lib/libgc.so.1
libgc.so (libc6,x86-64) => /usr/lib/libgc.so
libgamin-1.so.0 (libc6,x86-64) => /usr/lib/libgamin-1.so.0
libgailutil.so.18 (libc6,x86-64) => /usr/lib/x86_64-linux-gnu/libgailutil.so.18
libfuse.so.2 (libc6,x86-64) => /lib/libfuse.so.2
...
  1. Чтобы установить Virtuoso с поддержкой Mono, я использовал следующие руководства:

  2. Виртуоз работал раньше, я просто не могу заставить Виртуоз строить с —enable-mono. Mono работает хорошо, без проблем может создавать и выполнять dll и exe.
    ,

.

.

ОРИГИНАЛЬНЫЙ ВОПРОС:

Я установил Virtuoso и Mono на сервер Ubuntu и используя это
руководство
скомпилировал класс sanity.cs в файл sanity.dll. Когда я
попытался импортировать вектор, я получил сообщение:

SQLState: 42001
Message: SR185: Undefined procedure DB.DBA.import_clr.

Означает ли это, что я поставил .dll в неправильном месте? Или у меня есть
установлена ​​не та версия Virtuoso?

Я использовал apt-get для установки Virtuoso и Mono.

ОБНОВЛЕНИЕ: Хорошо, подходящая версия Virtuoso была слишком старой.
Аккаунт OpenLink Twitter сказал мне, что новые версии должны быть построены
из аккаунта Github.

Теперь я создал Virtuoso на Ubuntu, следуя инструкциям
https://github.com/openlink/virtuoso-opensource, но это не
объясните, как интегрировать Mono любым способом.

  • Я уже заставил файл sanity.cs Hello World работать, подтверждая, что Mono настроен правильно.
  • Сервер работает, но раздел Mono в Virtuoso.ini пуст:

.

[Mono]
;MONO_TRACE                     = Off
;MONO_PATH                      = <path_here>
;MONO_ROOT                      = <path_here>
;MONO_CFG_DIR                   = <path_here>
;virtclr.dll                    =

Я положил пути по умолчанию в этом файле, как это:

[Mono]
;MONO_TRACE                     = Off
;MONO_PATH                      = /usr/bin/mono
;MONO_ROOT                      = /usr/lib/mono
;MONO_CFG_DIR                   = /etc/mono
;virtclr.dll                    =

Я не могу find virtclr.dll в моей системе. Как я могу сгенерировать это? Можно
кто-нибудь, помогите мне со ссылкой, объясняющей, как интегрировать Mono в
Виртуоз или подскажите, как поступить? Должен ли я построить Виртуоз с
разные настройки?

1

Решение

Это немного беспорядок. Это зависит от mono-1.1.7и он не создает его перед тем, как использовать элементы, от которых зависит; так что сборка грязная. Я сильно подозреваю, что разработчики не собирают и не тестируют этот аспект своего проекта.

Вам нужно скачать mono-1.1.7 вручную — это потому, что местоположение моно тарбалла не там, где они думают; например от:

wget -O binsrc/mono/mono-1.1.7.tar.gz ftp://ftp1.freebsd.org/mirror/FreeBSD-Archive/ports/distfiles/mono-1.1.7.tar.gz

если у вас нет wget, вы можете использовать curl:

curl -o binsrc/mono/mono-1.1.7.tar.gz ftp://ftp1.freebsd.org/mirror/FreeBSD-Archive/ports/distfiles/mono-1.1.7.tar.gz

запустить настройку:

./configure --enable-mono

Поменяйте местами порядок binsrc а также libsrc подкаталоги в Makefile:

sed -i 's/libsrc binsrc/binsrc libsrc/' Makefile

запустите make (используйте опцию -j, если вы хотите сделать это быстрее, например, -j2):

make

Сборка не удастся. Не паникуйте. Поменять местами binsrc и libsrc снова:

sed -i 's/binsrc libsrc/libsrc binsrc/' Makefile

и снова запустите make:

make

На этом этапе сборка должна быть успешной.

Имейте в виду, что он использует закрытую копию mono-1.1.7, а большинство современных дистрибутивов Linux используют 2.0, поэтому с этим могут возникнуть некоторые конфликты.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]