ОБНОВЛЕНИЕ: Хорошо, я нашел это на эта страница: вам нужно запустить ./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
...
Чтобы установить Virtuoso с поддержкой Mono, я использовал следующие руководства:
Виртуоз работал раньше, я просто не могу заставить Виртуоз строить с —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 в
Виртуоз или подскажите, как поступить? Должен ли я построить Виртуоз с
разные настройки?
Это немного беспорядок. Это зависит от 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, поэтому с этим могут возникнуть некоторые конфликты.
Других решений пока нет …