更新:好的,我在此页面上找到了它:您必须使用 --enable-mono 参数运行 ./configure。然后,您还会发现缺少一些没有在任何地方提及的依赖项。
可悲的是,这给我留下了另一个我无法解决的问题。由于我们这里还有未完成的赏金,所以让我们问这个。
在执行 ./autogen 和 ./configure --enable_mono 之后(在代码分支develop/6 和develop/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
此链接包含有问题文件的内容。如果我删除 forgc_typed.h
的导入,则找不到下一个导入。我只是做了sudo apt-get install libgc-dev
哪些工作。Make 仍然给我同样的错误。我相信这个文件周围的某个地方和这个编译错误被埋没了,但我无法修复它。
我是 Linux 菜鸟,有人可以给我建议这里可能是什么问题或如何解决它?
附加信息: 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
...
为了安装支持 Mono 的 Virtuoso,我使用了以下教程:
- Virtuoso GitHub 页面上的 README
- 我在这个 Mono-Virtuoso 页面上进行导出时遇到了一些小问题,可能是其中一个问题吗?
Virtuoso 之前一直在工作,我只是没有让 Virtuoso 使用 --enable-mono 构建。Mono 运行良好,可以毫无问题地构建和执行 dll 和 exe。.
.
.
原始问题:
我在 Ubuntu 服务器上安装了 Virtuoso 和 Mono,并使用本教程将 sanity.cs 类编译为 sanity.dll 文件。当我尝试导入“向量”时,我收到一条消息:
SQLState: 42001 Message: SR185: Undefined procedure DB.DBA.import_clr.
这是否意味着我将 .dll 放在了错误的位置?还是我安装了错误的 Virtuoso 版本?
我使用 apt-get 安装 Virtuoso 和 Mono。
更新:好的,Virtuoso 的 apt-get 版本太旧了。OpenLink Twitter 帐户告诉我,新版本应该从 Github 帐户构建。
现在我按照https://github.com/openlink/virtuoso-opensource上的自述文件在 Ubuntu 上构建了 Virtuoso ,但这并没有解释如何以任何方式集成 Mono。
- 我已经使 sanity.cs Hello World 文件工作,确认 Mono 设置正确。
- 服务器运行,但 Virtuoso.ini 中的 Mono 部分为空:
.
[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。我怎样才能生成它?有人可以帮助我提供一个链接,解释如何在 Virtuoso 中集成 Mono 或告诉我如何继续吗?我应该用不同的设置构建 Virtuoso 吗?