That solves my problem! Thank you so much :) libc is a special case, and I should have thought about it more.
// mickey On Fri, Aug 4, 2017, at 14:44, Matt Wette wrote: > > > On Aug 4, 2017, at 2:15 PM, Jeff Mickey <j...@codemac.net> 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)). >