[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: dynamic-link on libc
From: |
Matt Wette |
Subject: |
Re: dynamic-link on libc |
Date: |
Fri, 4 Aug 2017 14:44:49 -0700 |
> On Aug 4, 2017, at 2:15 PM, Jeff Mickey <address@hidden> wrote:
>
> Hi guilers!
>
> I cannot seem to call `dynamic-link' on libc.
>
> I'm trying to write a simple, dumb wrapper around syslog using the (system
> foreign) dynamic library to learn how to use the dynamic ffi.
>
> (use-modules (system foreign))
> (define libcsyslog (dynamic-link "libc")) (define syslog (let ((f
> (pointer->procedure void (dynamic-func "syslog" libcsyslog) (list
> int '*)))) (lambda (level msg) (let* ((clevel level)
> (cmsg (string->pointer msg))) (f clevel cmsg))))) (syslog 3 "hello there")
>
> This works when I symlink /lib/x86_64-linux-gnu/libc.so.6 to libc.so, but it
> looks like the libtool library that is doing the load doesn't accept names
> that end in ".6" as a library name, and when I used the full path it just
> says "file not found".
>
> Anyone have suggestions? I looked at the dynl.c sysdep_dynl_link function,
> but I'm not sure I understand libtool well enough to know what lt_dlopenext
> should be doing.
>
> I should add I tested this on a debian system with a debian provided guile,
> and a "user installed guix" guile install as well.
>
> Thanks!
>
> // codemac
>
I don’t think you need to dynamic-link libc; just use (dynamic-func "syslog"
(dynamic-link)).