2013-03-07 20 views
1

更新:好的,我在this page上找到了它:必須使用--enable-mono參數運行./configure。然後你會發現還有一些更多的依賴沒有被提及到。在Ubuntu上構建Virtuoso(與Mono集成):在libgc上生成錯誤

不幸的是,這給我帶來了另一個我無法解決的問題。由於我們在這裏還沒有完成的賞金,讓我們來問一下。

做./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 

This link擁有的內容有問題的文件。如果我刪除gc_typed.h的導入,則找不到下一個導入。我只是做了sudo apt-get install libgc-dev哪些工作。讓仍然給我同樣的錯誤。我相信這個文件和這個彙編的錯誤被埋沒了,但我無法修復它。

我是一個Linux noob,有人可以給我建議這裏可能是什麼問題或如何解決它?

附加信息: 1. ldconfig -v -p清楚地說,libgc.so存在,那麼爲什麼這使腳本尋找頭?

... 
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. 要使用單聲道支持安裝炫技,我用下面的教程:

  2. Virtuoso一直在工作,我只是沒有讓Virtuoso用--enable-mono構建。單聲道工作良好,可以建立和執行DLL和EXE沒有問題。 。

ORIGINAL QUESTION:

I installed Virtuoso and Mono on a Ubuntu server and using this tutorial compiled the sanity.cs class to a sanity.dll file. When I tried importing the 'vector' I got a message:

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

Does that mean that I put the .dll in the wrong place? Or do I have the wrong version of Virtuoso installed?

I used apt-get to install Virtuoso and Mono.

UPDATE: Okay, the apt-get version of Virtuoso was waaay too old. The OpenLink Twitter account told me that the new versions should be built from the Github account.

Now I built Virtuoso on Ubuntu following the readme on https://github.com/openlink/virtuoso-opensource , but that doesn't explain how to integrate Mono in any way.

  • I already made the sanity.cs Hello World file work, confirming that Mono is setup correctly.
  • The server runs, but the Mono section in the Virtuoso.ini is empty:

.

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

I put the default paths in this file like this:

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

I cannot find a virtclr.dll on my system. How can I generate it? Can someone help me with a link explaining how to integrate Mono in Virtuoso or tell me how to proceed? Should I have built Virtuoso with different settings?

回答

2

這是一個混亂。它取決於mono-1.1.7,並且它在嘗試使用它所依賴的項目之前不會構建它;所以構建是混亂的。我強烈懷疑開發人員不是在構建/測試他們項目的這一方面。

您需要手動下載mono-1.1.7 - 這是因爲mono 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 -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 

交換binsrclibsrc子目錄的順序Makefile

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

run make(使用-j選項,如果你想讓它更快速,例如-j2):

make 

構建將失敗。不要驚慌。交換binsrc並再次 libsrc

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

並重新運行make:

make 

構建應該在這一點上取得成功。

請記住,它採用單1.1.7的專用副本,以及最現代的Linux發行版使用的2.0,所以可能會有一些衝突與此有關。

+0

謝謝,我明天會測試一下:-) – Akku 2013-04-09 16:22:57

+0

沒有工作,但至少不是一樣的錯誤;-) – Akku 2013-04-10 08:06:42

+0

我刪除了整個安裝,再次克隆git repo,得到舊的mono運行時再次,做了./autogen.sh,因爲./configure else不會運行,並執行你建議的其餘命令。可悲的是,在第二次運行還是有錯誤:'.../libvirtuoso-GC-TA(libthrp_gc_la-sched_pthread_gc.o):在功能'oplthread_create': ..../sched_pthread.c:424:未定義參考到'GC_pthread_create」 ..../libvirtuoso-GC-TA(libthrp_gc_la-sched_pthread_gc.o):在功能'thread_exit ': ..../sched_pthread.c:571:未定義參考'GC_pthread_detach' collect2: LD返回1退出status' – Akku 2013-04-10 09:07:47