annotate src/vamp-plugin-sdk-2.5/build/README.linux @ 83:ae30d91d2ffe

Replace these with versions built using an older toolset (so as to avoid ABI compatibilities when linking on Ubuntu 14.04 for packaging purposes)
author Chris Cannam
date Fri, 07 Feb 2020 11:51:13 +0000
parents 619f715526df
children
rev   line source
Chris@23 1
Chris@23 2 The Vamp Plugin SDK -- Platform Notes for Linux and other GNU platforms
Chris@23 3 =======================================================================
Chris@23 4
Chris@23 5 Building at the command line
Chris@23 6 ----------------------------
Chris@23 7
Chris@23 8 To build the SDK, example plugins, and command-line host:
Chris@23 9
Chris@23 10 $ ./configure
Chris@23 11 $ make
Chris@23 12
Chris@23 13 To install after a successful make, run "make install" as root (or via
Chris@23 14 sudo).
Chris@23 15
Chris@23 16
Chris@23 17 Installing the Example Plugins
Chris@23 18 ------------------------------
Chris@23 19
Chris@23 20 To install the example plugins so you can load them in Vamp hosts,
Chris@23 21 copy the files
Chris@23 22
Chris@23 23 examples/vamp-example-plugins.so
Chris@23 24 and
Chris@23 25 examples/vamp-example-plugins.cat
Chris@23 26
Chris@23 27 to
Chris@23 28 /usr/local/lib/vamp/
Chris@23 29 or
Chris@23 30 $HOME/vamp/
Chris@23 31
Chris@23 32
Chris@23 33 Plugin Linkage
Chris@23 34 --------------
Chris@23 35
Chris@23 36 Vamp plugins are distributed as dynamic libraries (.so files). A
Chris@23 37 properly packaged Vamp plugin library should export exactly one public
Chris@23 38 symbol, namely the Vamp API entry point vampGetPluginDescriptor.
Chris@23 39
Chris@23 40 The default for the GNU linker is to export all of the symbols in the
Chris@23 41 library. This will work (the host will be able to load the plugin),
Chris@23 42 but it unnecessarily pollutes the host's symbol namespace, it may
Chris@23 43 cause symbol collisions in some esoteric circumstances, and it
Chris@23 44 increases the amount of time the plugin takes to load.
Chris@23 45
Chris@23 46 To improve this behaviour, you can instruct the linker to export only
Chris@23 47 the one required symbol using a linker script. To do this, place the
Chris@23 48 text
Chris@23 49
Chris@23 50 {
Chris@23 51 global: vampGetPluginDescriptor;
Chris@23 52 local: *;
Chris@23 53 };
Chris@23 54
Chris@23 55 into a text file, and then use the --version-script option to the
Chris@23 56 linker to tell it to refer to this file. All other symbols will then
Chris@23 57 be properly hidden.
Chris@23 58
Chris@23 59 The Makefile included in this SDK uses this method to manage symbol
Chris@23 60 visibility for the included example plugins, using the file
Chris@23 61 build/vamp-plugin.map. There are other methods that will work too,
Chris@23 62 but this one is simple and has the advantage of requiring no changes
Chris@23 63 to the code.
Chris@23 64
Chris@23 65
Chris@23 66 Test Your Plugins
Chris@23 67 -----------------
Chris@23 68
Chris@23 69 The Vamp Plugin Tester is a vital utility which you can use to test
Chris@23 70 your plugins for common problems. It can help you if you're having
Chris@23 71 problems getting your plugin to work at all, and you're strongly
Chris@23 72 advised to use it before you release anything. Download it from the
Chris@23 73 Vamp plugins site now!
Chris@23 74