Where does the VST come from on Linux?

I’m switching to Linux after months of OSX development (where I’ve made AU’s and VSTs successfully). I’m trying now to do development on Linux and I’m a bit confused about where the VST actually comes from. I’ve studied the makefile for my Juce plugin as created by the jucer and it seems to create a MyPlugin.so file, but no .vst.

I’m currently not working at head but I know people have been making VSTs for years with Juce (presumably also on Linux), so it seems more like something I’m missing rather than a code problem or an issue related to me using an old version. Any help is appreciated. Thanks!

The .so is the VST. It’s a shared object (dynamic) library.

You might need to create a .vst directory in your home directory.

In your shell:

mkdir ~/.vst

EDIT: Then in the binary location section in the producer under debug and release builds for the linux makefile project put ~/.vst so that the build is put in the .vst directory.

Then when you scan for the plugin the .so file will be loaded in the plugin host/DAW that you are using. The VST is build as a dll effectivley which is then loaded by the host at runtime,

I see. Thank you, that is helpful.

Another question, which you may or may not know the answer to…
When I build the Juce plugin host with the makefile, I get an .so file as well. On mac, I get an app and it opens when I click on it. On linux, if I try and run that .so file directly (which isn’t a natural thing to do as I understand it), I get a seg fault. How does one run the plugin host on linux?

Erm I’m not at my Linux machine at the moment. Will check for you this evening.

Should have the executable (in whatever format) under ProjectName/Builds/LinuxMakeFile/build/

I normally create a symlink/shortcut on the desktop to

~/JUCE/examples/audio\ plugin\ host/Builds/Linux/build/Juce\ Plugin\ Host

Then whenever I build the latest version in my JUCE folder I can launch it straight away clicking the link icon on the desktop. (Usually do the same for the Projucer)

At least I think that’s the right path off the top of my head but can’t check till later…

Note after make the actual executable should be under build not build/debug or build/release I believe.

Just checked now and seems to work for me. But I vaguely remember several people reporting this issue - I just wish I could reproduce this (I’m on Mint Linux btw).

I wasn’t actually reporting a bug (to my knowledge). I’m just trying to understand how the linux build works. I have learned that the .so file created when I build a plugin is the VST. What I was surprised to see was that we created (what looked like) a VST for the plugin host as well. What I expected to see was a binary that I run that opens the plugin host GUI. Perhaps I’m doing things correctly by trying to run the .so?

Another detail that is possibly important is that I’m not using make to build this. I’ve been trying to get my codebase to build with Bazel. I won’t trouble you with the details of that, but it would suffice to say that if things aren’t working for me, it’s not necessarily Juce’s fault.

It shouldn’t be building a .so for the host. It should be building something without any file extension. That fact that it is building the plug-in host with a .so extension is a bug - which I cannot reproduce though.

Actually, that was a mistake on my part. I was looking at the Juce Plugin Demo makefile rather than the Juce Plugin Host makefile. The plugin host makefile does not have that extension.