Re: Problems with sqlite
- From: "Michael Davies" <michael msdavies net>
- To: "Fredrik Hedberg" <fredrik hedberg avafan com>
- Cc: Michael Davies <michael msdavies net>, Dashboard <dashboard-hackers gnome org>
- Subject: Re: Problems with sqlite
- Date: Tue, 14 Dec 2004 10:53:58 -0600
[top-posting corrected]
Fredrik Hedberg said:
> Tom Coleman wrote:
>> On Tue, 2004-12-07 at 23:25 -0600, Michael Davies wrote:
>>
>>>Jon Trowbridge said:
>>>
>>>>On Tue, 2004-12-07 at 21:37 -0600, Michael Davies wrote:
>>>>
>>>>>ERROR: System.Reflection.TargetInvocationException: Exception has been
>>>>>thrown by the target of an invocation. --->
>>>>> System.DllNotFoundException:
>>>>>sqlite
>>>>>in <0x00053> (wrapper managed-to-native)
>>>>
>>>>This is just a guess, but the problem could be a mono-ism that has been
>>>>a source of much confusion.
>>>>
>>>>The mono runtime will throw a System.DllNotFoundException any time an
>>>>attempt to dlopen() a shared library fails. This is misleading because
>>>>there are several different ways a dlopen() call can fail --- the file
>>>>not being found is just the most obvious one.
>>>>
>>>>Often, dlopen() will fail because of unresolved symbols. This usually
>>>>happens because the shared library's dependencies were not set properly
>>>>at build-time. It is an easy mistake to make: lots of shared libraries
>>>>are never ever dlopen()ed by other apps --- they are linked to
>>>>applications, along with lots of other libraries via a tool like
>>>>pkg-config that also (independently) manages library dependencies.
>>>>
>>>>There is an easy way to test for this: try linking just that library
>>>>against a trivial C program. Create a file trivial.c containing just
>>>>"main() { }" and then:
>>>>% gcc trivial.c -lsqlite
>>>>
>>>>If there are no errors, libsqlite.so's dependencies are set correctly
>>>>and the problem must be something else. If you see unresolved symbols,
>>>>the Ubuntu libsqlite.so is broken.
>>>
>>>Thanks Jon for your guidance - you were right on the money.
>>>
>>>Ubuntu's libsqlite.so appears broken. It looks ok, but on installing
>>> the
>>>CVS version of sqlite in a different prefix, everything suddenly works.
>>>
>>>(Two points for those googling in the future - make sure you back revise
>>>the CVS repo for sqlite to 2.8, and make sure LD_LIBRARY_PATH points to
>>>your newly built sqlite rather than the system's installed version)
>>>
>>>CVS Beagle now is running as expected on my Warty Ubuntu install.
>>
>>
>> I'm not sure if this is a problem with ubuntu or with sqlite version 3.0
>>
>> I was getting the same problem on my gentoo unstable system, so i
>> downgraded sqlite to 2.8 and it fixed the problem.
>>
>> Just adding my own two cents.
>
> I'm pretty sure that the Mono.Data.SqliteClient.dll uses the 2.x API of
> sqlite.so/dll.
Yep I agree. You need to downgrade sqlite to 2.8. That should probably
be included on the wiki (note to self - I can do this tonight)
--
michael at msdavies dot net
http://michaeldavies.org/weblog
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]