pieter:
> Hello,
> 
> I'm researching the use of Haskell to replace some perl scripts (in a web 
> app).
> The app is deployed with a webhosting provider.
> 
> CGI scripts can be executed =>  I can use Haskell. I've tried some
> hello world cgi scripts, compiled them on the same linux
> the hosting company uses and deployed them. It worked!
> 
> But I would like to implement a search feature for the website.  For
> Java/php/perl there 's lucene.
> For haskell there 's holumbus. Unfortunately, sqlite is a requirement
> for holumbus. It is not installed at the server of the
> hosting company.
> 
> Is it possible to staticly link the sqlite3 library using ghc ?

Yes, it is entirely possible to statically link entire CGI apps.

For example, this simple program,

    import Database.SQLite
    main = print "hey, test this"

when compiled as $ ghc A.hs --make is dynamically linked against:

    $ ldd A
    A:
        Start            End              Type Open Ref GrpRef Name
        0000000000000000 0000000000000000 exe  1    0   0      A
        0000000041a85000 0000000041ee5000 rlib 0    1   0      
/usr/local/lib/libsqlite3.so.9.0
        0000000049b04000 0000000049f1d000 rlib 0    1   0      
/usr/lib/libm.so.2.3
        0000000042213000 000000004264f000 rlib 0    1   0      
/usr/local/lib/libgmp.so.7.0
        0000000047d0e000 00000000481e0000 rlib 0    1   0      
/usr/lib/libc.so.42.0
        0000000047900000 0000000047900000 rtld 0    1   0      
/usr/libexec/ld.so

Now, we can just pass some linker flags through to statically link this lot,

    $ ghc A.hs --make -optl-static -no-recomp
    $ ldd A                                  
    ldd: A: not a dynamic executable
    $ file A
    A: ELF 64-bit LSB executable, AMD64, version 1, for OpenBSD, statically 
linked, not stripped

I've added this information to the web programming FAQ,

    
haskell.org/haskellwiki/Practical_web_programming_in_Haskell#Deploying_statically_linked_applications

Note it also works for fastcgi, which when combined with Haskell's lightweight
threads, makes a good option for performance-oriented web apps.

-- Don
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to