libgc, кажется, отсутствует (Установка Virtuoso-Opensource с поддержкой Mono)

Я собираю Virtuoso Opensource после выполнения ./configure --enable_mono - отлично работает. Вызов 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, может кто-нибудь дать мне совет, в чем может быть проблема или как ее решить?

РЕДАКТИРОВАТЬ: FYI: 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
...

person Akku    schedule 09.04.2013    source источник


Ответы (2)


Поддержка монохостинга Virtuoso предназначена для версии 1.x и не будет работать с текущей версией 2.x и более поздними версиями, для которых поддержка должна быть добавлена ​​в график ...

Это конкретно поддержка среды выполнения mono, которую вы ищете, или, может быть, просто поставщик ADO.Net для Mono, который можно построить с использованием:

cd binsrc/VirtuosoClient.Net
gmake -f Makefile.mono

С наилучшими пожеланиями Хью Уильямс Полезно Бесполезно

person Hugh Williams    schedule 09.04.2013

Вы должны проверить содержимое, предоставленное пакетом 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> или изменить make-файл, добавив: -I/usr/include/gc. Я бы изменил вариант -I в крайнем случае.

В качестве альтернативы вы можете добавить файл в /usr/include под названием gc.h с простым содержимым:

/* This file is installed for backward compatibility. */
#include <gc/gc.h>
person Petesh    schedule 09.04.2013
comment
На самом деле что-то в коде, который я скопировал, казалось неправильным, реальная проблема теперь может быть найдена в этом вопросе, на это вы также можете ответить: stackoverflow.com/questions/15274537/ - person Akku; 09.04.2013