在做完./configure --enable_mono之后,我正在构建Virtuoso开源-工作得很好。调用make会给我一个错误,因为找不到libgc。
make[2]: Entering directory `/usr/local/src/virtuoso-opensource/libsrc/Thread'
/bin/bash ../../libtool --tag=CC --mode=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 -o libthrp_gc_la-sched_pthread_gc.lo `test -f 'sched_pthread_gc.c' || echo './'`sched_pthread_gc.c
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:41:16: fatal error: gc.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
dellas@india672:/usr/local/src/virtuoso-opensource$ 我刚刚做了sudo apt-get install libgc-dev,它起作用了。Make仍然会给我同样的错误。我是一个Linux新手,有人能给我一些建议吗?这里可能存在什么问题,或者如何解决它?
编辑:仅供参考: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
...发布于 2013-04-09 22:29:55
Virtuoso mono主机支持是针对1.x版本的,不会与当前的2.x和更高版本一起工作,需要计划添加对这些版本的支持。
Is是您正在寻求的特定的单声道运行时支持,或者可能只是Mono的ADO.Net提供程序,它可以使用以下方式构建:
cd binsrc/VirtuosoClient.Net
gmake -f Makefile.mono向休·威廉姆斯致以最好的问候
发布于 2013-04-09 18:31:23
您应该检查libgc-dev包提供的内容。/usr/include中通常有一个名为gc.h的兼容性文件,它的唯一目的是#include <gc/gc.h>。您的发行版可能没有这个文件,这是导致编译问题的原因。
要检查libgc-dev的内容,请执行以下操作:
dpkg-query -L libgc-dev这将列出该软件包提供的所有文件。如果它不包含/usr/include/gc.h,那么您可能需要更改#include以读取#include <gc/gc.h>,或者将makefile更改为add:-I/usr/include/gc。在万不得已的情况下,我会更改-I选项。
或者,您可以在/usr/include中添加一个名为gc.h的文件,其中包含以下简单内容:
/* This file is installed for backward compatibility. */
#include <gc/gc.h>https://stackoverflow.com/questions/15897270
复制相似问题