Help with plugin compilation on Linux (undefined symbol)

I get a strange issue on my Linux machine when trying to build my REDs collection (other plugins are already compiled for linux)

the plugins compile without errors.

when I launch Rack, the plugins are not loaded and I get this error:

> [0.020 warn src/plugin.cpp:173 loadPlugin] Could not load plugin /home/antonio/Desktop/Rack20/Rack/plugins/Autodafe-REDs: Failed to load library /home/antonio/Desktop/Rack20/Rack/plugins/Autodafe-REDs/plugin.so: /home/antonio/Desktop/Rack20/Rack/plugins/Autodafe-REDs/plugin.so: undefined symbol: _ZTIN3gam14DomainObserverE

This should be related to an external library I am using, called Gamma. But I really can’t find where the issue is. Any help is appreciated, this is blocking me from submiting everything to the library…

TIA

Are you sure the plugin is updated to V2 ? Did you declare the PATH ? Where did you get the sources from ?

it’s MY plugin (one of the series, Autodafe, Autodafe Drums, Autodafe REDs). Yes they are updated to V2, the same sources compile ad work both on Win and Mac. Only Linux is giving me this issue, and only on one of three series. Only my REDs collection is behaving like this… It compiles without errors (only some warning, I want to eliminate them)

1 Like

I have narrowed down the issue to only one module…and that’s the only one suing the “Gamma” library causing the issue.

I have tried recompiling the Gamma library, now when I compile my plug I get:

g++ -o plugin.so build/src/AudioFile.cpp.o build/src/Autodafe.cpp.o build/src/DSPUtilities.cpp.o build/src/CosineVCO.cpp.o build/src/SquareVCO.cpp.o build/src/DrumSampler.cpp.o build/src/AM-FMVCO.cpp.o -Lsrc/stk/src -lstk -Lsrc/Gamma/build/lib -lGamma -shared -L/home/antonio/Desktop/Rack-SDK -lRack -Wl,-rpath=/tmp/Rack2 -static-libstdc++ -static-libgcc 
/usr/bin/ld: src/Gamma/build/lib/libGamma.a(Domain.o): relocation R_X86_64_PC32 against symbol `_ZTVN3gam14DomainObserverE' can not be used when making a shared object; recompile with -fPIC
/usr/bin/ld: final link failed: bad value
collect2: error: ld returned 1 exit status
make: *** [/home/antonio/Desktop/Rack-SDK/compile.mk:62: plugin.so] Error 1

whet is the “Recompile with -fPIC” suggestion? I can’t understand what it means…

A common error on Linux. Add the -fPIC flag to your makefile link options and your code should compile okay then. NB: I’m not a programmer, I hope this is correct. :slight_smile:

[edit] Sorry, -fPIC is an object compiler option, not a linker option.

I would guess that its related to DomainObserver