Giter Site home page Giter Site logo

Comments (7)

Tiiffi avatar Tiiffi commented on May 22, 2024 1

Hello,

I am running this extension native on Linux and stumbled on the same problem.

On my machine the bundled fs-uae cannot open libSDL2_ttf-2.0.so shared object.

There are at least two workarounds:

  1. Use LD_PRELOAD=/path/to/libSDL2_ttf-2.0.so ./fs-uae to launch the emulator (you might need to add more dependencies here)

  2. Install missing library packages from your package manager (in my case libsdl2-ttf-2.0-0 on Debian / Ubuntu)

Note that this might happen with other shared objects too. Try running the bundled fs-uae manually to see what is happening.

Alternatively you can print bundled fs-uae shared object dependencies with ldd to see if some shared object dependencies are missing.


In addition to this problem I had to manually add execute flag to all bundled binaries.

from vscode-amiga-debug.

BartmanAbyss avatar BartmanAbyss commented on May 22, 2024

seems the emulator crashes before the debugger can connect. Can you try the regular windows version?

from vscode-amiga-debug.

ssav7912 avatar ssav7912 commented on May 22, 2024

Can confirm the native windows version does work. WSL should be capable of calling to windows if invoking a windows executable, but I did try this on the winuae-gdb.exe and while WinUAE does launch, it locks up immediately. Running under windows works well though so not too concerned about making WSL behave.

from vscode-amiga-debug.

BartmanAbyss avatar BartmanAbyss commented on May 22, 2024

I suspect the problem is if you're using WSL that you're using the Linux version that comes with FS-UAE, probably that's not compatible with WSL. Any specific reason you're not using the native Windows version?

from vscode-amiga-debug.

BartmanAbyss avatar BartmanAbyss commented on May 22, 2024

@grahambates do we need to bundle that TTF library?

from vscode-amiga-debug.

grahambates avatar grahambates commented on May 22, 2024

We do currently bundle libSDL2_ttf-2.0.so.0 in the linux dir. I'll look into why this isn't being loaded in this case.

from vscode-amiga-debug.

Tiiffi avatar Tiiffi commented on May 22, 2024

Hi,

I'm not an expert on these things, but my understanding is that Linux doesn't look for dynamic libraries in the current path by default.

So my suggestion is to set environment variable LD_LIBRARY_PATH to . or '$ORIGIN' (or whatever is the correct library path) before launching the emulator.
This can be done via launch script or perhaps the vscode extension has already some other way to do it.

Shell script for example:

#!/bin/sh

# Set dynamic loader search path to current binary path and pass command line arguments ("$@")
LD_LIBRARY_PATH='$ORIGIN' /path/to/fs-uae "$@"

Alternatively, if you compile the emulator yourself, you can tell the linker to add a custom search path using the -rpath flag.

More details about the dynamic loader here: https://man7.org/linux/man-pages/man8/ld.so.8.html


Edit:

I had time to investigate bit further and looks like there was already this kind of thing in place:

LD_LIBRARY_PATH: ".", // Allow Linux fs-uae to find bundled .so files

Changing LD_LIBRARY_PATH: "." to LD_LIBRARY_PATH: "$ORIGIN" seems to make it work properly.

Looks like "." alone points to project workspace directory.

Quote from manpage:

   $ORIGIN (or equivalently ${ORIGIN})
          This expands to the directory containing the program or
          shared object.  Thus, an application located in
          somedir/app could be compiled with

              gcc -Wl,-rpath,'$ORIGIN/../lib'

          so that it finds an associated shared object in
          somedir/lib no matter where somedir is located in the
          directory hierarchy.  This facilitates the creation of
          "turn-key" applications that do not need to be installed
          into special directories, but can instead be unpacked into
          any directory and still find their own shared objects.

from vscode-amiga-debug.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.