更新:好的,我在this page上找到了它:你必须使用--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
This link包含有问题文件的内容。如果我删除gc_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之前一直在工作,我只是没有让Virtuoso用--enable-mono来构建。单声道效果很好,可以毫无问题地构建和执行dll和exes。
原始问题:
我在Ubuntu服务器上安装了Virtuoso和Mono,并且using this tutorial将sanity.cs类编译为sanity.dll文件。当我 尝试导入'vector'我收到了一条消息:
SQLState: 42001 Message: SR185: Undefined procedure DB.DBA.import_clr.
这是否意味着我将.dll放在错误的位置?或者我有 安装了错误的Virtuoso版本?
我使用apt-get安装Virtuoso和Mono。
更新:好的,Virtuoso的apt-get版本太旧了。该 OpenLink Twitter帐户告诉我应该构建新版本 来自Github帐户。
现在我按照自述文件在Ubuntu上构建了Virtuoso https://github.com/openlink/virtuoso-opensource,但事实并非如此 解释如何以任何方式集成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。我该如何生成它?能够 有人帮我解释了如何整合Mono的链接 Virtuoso或告诉我如何进行?我应该用Virtuoso制作 不同的设置?
答案 0 :(得分:2)
这有点乱。它取决于mono-1.1.7
,并且在尝试使用它所依赖的项之前不会构建它;所以构建很混乱。我强烈怀疑开发人员没有构建/测试他们项目的这个方面。
您需要手动下载mono-1.1.7
- 这是因为单声道tarball的位置不在他们认为的位置。例如从:
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:
./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,因此可能存在一些冲突。