libsqlite3.so file is only a symbolic link to the fully versioned library file name,
libsqlite3.so.0.8.6. At runtime, the dynamic loader only knows about the fully versioned library. This is true for most shared libraries. There are some libraries which are not versioned, and only available as
libnspr4.so for example. However, such libraries are also packaged correctly, as appropriate.
Programs should not be trying to dlopen the non-versioned link of the library. If they wish to do that, they should instead use the
libsqlite3.so.0 filename, for example, which is installed in the binary library package, rather than the accompanying -dev package. This way the program will continue working if sqlite3 breaks API compatibility at some point, and there is a
libsqlite3.so.1 instead. Using
libsqlite3.so.0 would ensure the program would use the API of the library which it was written to work with.