in reply to Re: What's happened to Yaswi?
in thread What's happened to Yaswi?

I think adjusting LD_LIBRARY_PATH won't help here, as the problem rather seems to be that .../Low.so isn't even linked against the Prolog library libswipl.so in the first place (which then of course leads to the "undefined symbol: PL_open_foreign_frame" error).

The link command does add a link-time library search path for swi-prolog

cc -shared -O2 -g -L/usr/local/lib -fstack-protector Low.o callba +ck.o callperl.o hook.o perl2swi.o swi2perl.o plconfig.o argv.o query. +o vars.o context.o engines.o o +paque.o -o ../blib/arch/auto/Language/Prolog/Yaswi/Low/Low.so \ -lgmp -lrt -lreadline -lncurses -lm -lrt -ldl -L/usr/lib/sw +i-prolog/lib/i386/ ^^^^^^^^^^^^^ +^^^^^^^^^^^^^^^^^^

but the actual link instruction -lswipl, which should follow it, is missing...   even though the library is listed as "PLLIB: -lswipl" in the SWI-Prolog configuration check.

The message "No library found for -lpl" suggests that it's looking for libpl.so instead of libswipl.so.

Replies are listed 'Best First'.
Re^3: What's happened to Yaswi?
by salva (Canon) on Aug 24, 2011 at 13:20 UTC
    Yes, that was the problem, the name used for the library got changed on SWI-Prolog 5.10.

    I will release a new version shortly.

      Hi Salva

      Thank you so much.

      Please could you advise me when it is released?

      Regards

      Steve

Re^3: What's happened to Yaswi?
by Anonymous Monk on Aug 24, 2011 at 12:55 UTC

    I think adjusting LD_LIBRARY_PATH won't help here, as the problem rather seems to be that .../Low.so isn't even linked against the Prolog library libswipl.so in the first place (which then of course leads to the "undefined symbol: PL_open_foreign_frame" error).

    If that were the case, there would be no .so file generated, there would be no .so file to try to load

      If that were the case, there would be no .so file generated

      That's not correct. The above link command would surely create the Low.so file (which is the XS binding), but that library won't have libswipl.so listed as a dependency.  In other words, the dynamic linker wouldn't even go looking for the latter library, no matter what LD_LIBRARY_PATHs you tell it to look in...

        That's not correct.

        Except that it is

        The linker goes looking for PL_open_foreign_frame just like the dynamic linker