leozimmerman / ofxAudioAnalyzer

openFrameworks wrapper for Essentia. Audio analysis algorithms in real-time
GNU Affero General Public License v3.0
183 stars 37 forks source link

Linux Error: requires dynamic R_X86_64_32 reloc which may overflow at runtime; recompile with -fPIC #21

Closed ratmother closed 5 years ago

ratmother commented 5 years ago

Ubuntu 18.04

Hi. On attempting to build examples and building an empty project with and without ofSoundPlayerExtended, the following errors occur:

/usr/bin/ld.gold: error: /home/red/OF/addons/ofxAudioAnalyzer/libs/fftw3f/lib/linux64/libfftw3f.a(mapflags.o): requires dynamic R_X86_64_32 reloc which may overflow at runtime; recompile with -fPIC /usr/bin/ld.gold: error: /home/red/OF/addons/ofxAudioAnalyzer/libs/fftw3f/lib/linux64/libfftw3f.a(rdft2-pad.o): requires dynamic R_X86_64_PC32 reloc against 'memcpy' which may overflow at runtime; recompile with -fPIC /usr/bin/ld.gold: error: /home/red/OF/addons/ofxAudioAnalyzer/libs/fftw3f/lib/linux64/libfftw3f.a(alloc.o): requires dynamic R_X86_64_32 reloc which may overflow at runtime; recompile with -fPIC /usr/bin/ld.gold: error: /home/red/OF/addons/ofxAudioAnalyzer/libs/fftw3f/lib/linux64/libfftw3f.a(assert.o): requires dynamic R_X86_64_PC32 reloc against 'fflush' which may overflow at runtime; recompile with -fPIC /usr/bin/ld.gold: error: /home/red/OF/addons/ofxAudioAnalyzer/libs/fftw3f/lib/linux64/libfftw3f.a(kalloc.o): requires dynamic R_X86_64_PC32 reloc against 'malloc' which may overflow at runtime; recompile with -fPIC /usr/bin/ld.gold: error: /home/red/OF/addons/ofxAudioAnalyzer/libs/fftw3f/lib/linux64/libfftw3f.a(planner.o): requires dynamic R_X86_64_32 reloc which may overflow at runtime; recompile with -fPIC /usr/bin/ld.gold: error: /home/red/OF/addons/ofxAudioAnalyzer/libs/fftw3f/lib/linux64/libfftw3f.a(primes.o): requires dynamic R_X86_64_32 reloc which may overflow at runtime; recompile with -fPIC /usr/bin/ld.gold: error: /home/red/OF/addons/ofxAudioAnalyzer/libs/fftw3f/lib/linux64/libfftw3f.a(problem.o): requires dynamic R_X86_64_32 reloc which may overflow at runtime; recompile with -fPIC /usr/bin/ld.gold: error: /home/red/OF/addons/ofxAudioAnalyzer/libs/fftw3f/lib/linux64/libfftw3f.a(timer.o): requires dynamic R_X86_64_PC32 reloc against 'gettimeofday' which may overflow at runtime; recompile with -fPIC /usr/bin/ld.gold: error: /home/red/OF/addons/ofxAudioAnalyzer/libs/fftw3f/lib/linux64/libfftw3f.a(lt4-problem.o): requires dynamic R_X86_64_32 reloc which may overflow at runtime; recompile with -fPIC /usr/bin/ld.gold: error: /home/red/OF/addons/ofxAudioAnalyzer/libs/fftw3f/lib/linux64/libfftw3f.a(problem2.o): requires dynamic R_X86_64_32 reloc which may overflow at runtime; recompile with -fPIC Etc...

Cont.

/usr/bin/ld.gold: error: /home/red/OF/addons/ofxAudioAnalyzer/libs/fftw3f/lib/linux64/libfftw3f.a(direct-r2r.o): requires dynamic R_X86_64_32 reloc which may overflow at runtime; recompile with -fPIC /usr/bin/ld.gold: error: /home/red/OF/addons/ofxAudioAnalyzer/libs/fftw3f/lib/linux64/libfftw3f.a(direct2.o): requires dynamic R_X86_64_32 reloc which may overflow at runtime; recompile with -fPIC /usr/bin/ld.gold: error: /home/red/OF/addons/ofxAudioAnalyzer/libs/fftw3f/lib/linux64/libfftw3f.a(hc2hc-direct.o): requires dynamic R_X86_64_32 reloc which may overflow at runtime; recompile with -fPIC /home/red/OF/addons/obj/linux64/Release/ofxAudioAnalyzer/src/ofSoundPlayerExtended.o:ofSoundPlayerExtended.cpp:function ofSoundPlayerExtended::readFile(boost::filesystem::path const&, std::vector<short, std::allocator >&): error: undefined reference to 'ofSoundPlayerExtended::mpg123ReadFile(boost::filesystem::path const&, std::vector<short, std::allocator >&, std::vector<float, std::allocator >&)' /home/red/OF/addons/obj/linux64/Release/ofxAudioAnalyzer/src/ofSoundPlayerExtended.o:ofSoundPlayerExtended.cpp:function ofSoundPlayerExtended::stream(boost::filesystem::path const&, std::vector<short, std::allocator >&): error: undefined reference to 'ofSoundPlayerExtended::mpg123Stream(boost::filesystem::path const&, std::vector<short, std::allocator >&, std::vector<float, std::allocator >&)' /home/red/OF/addons/obj/linux64/Release/ofxAudioAnalyzer/src/ofxAudioAnalyzerUnit.o:ofxAudioAnalyzerUnit.cpp:function ofxAudioAnalyzerUnit::setup(int, int): error: undefined reference to 'essentia::standard::Algorithm::input(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' /home/red/OF/addons/obj/linux64/Release/ofxAudioAnalyzer/src/ofxAudioAnalyzerUnit.o:ofxAudioAnalyzerUnit.cpp:function ofxAudioAnalyzerUnit::setup(int, int): error: undefined reference to 'essentia::standard::Algorithm::output(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' /home/red/OF/addons/obj/linux64/Release/ofxAudioAnalyzer/src/ofxAudioAnalyzerUnit.o:ofxAudioAnalyzerUnit.cpp:function ofxAudioAnalyzerUnit::setup(int, int): error: undefined reference to 'essentia::standard::Algorithm::input(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' /home/red/OF/addons/obj/linux64/Release/ofxAudioAnalyzer/src/ofxAudioAnalyzerUnit.o:ofxAudioAnalyzerUnit.cpp:function ofxAudioAnalyzerUnit::setup(int, int): error: undefined reference to 'essentia::standard::Algorithm::output(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' /home/red/OF/addons/obj/linux64/Release/ofxAudioAnalyzer/src/ofxAudioAnalyzerUnit.o:ofxAudioAnalyzerUnit.cpp:function ofxAudioAnalyzerUnit::setup(int, int): error: undefined reference to 'essentia::standard::Algorithm::input(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' /home/red/OF/addons/obj/linux64/Release/ofxAudioAnalyzer/src/ofxAudioAnalyzerUnit.o:ofxAudioAnalyzerUnit.cpp:function ofxAudioAnalyzerUnit::setup(int, int): error: undefined reference to 'essentia::standard::Algorithm::output(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' /home/red/OF/addons/obj/linux64/Release/ofxAudioAnalyzer/src/ofxAudioAnalyzerUnit.o:ofxAudioAnalyzerUnit.cpp:function ofxAudioAnalyzerUnit::setup(int, int): error: undefined reference to 'essentia::standard::Algorithm::input(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' /home/red/OF/addons/obj/linux64/Release/ofxAudioAnalyzer/src/ofxAudioAnalyzerUnit.o:ofxAudioAnalyzerUnit.cpp:function ofxAudioAnalyzerUnit::setup(int, int): error: undefined reference to 'essentia::standard::Algorithm::output(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' /home/red/OF/addons/obj/linux64/Release/ofxAudioAnalyzer/src/ofxAudioAnalyzerUnit.o:ofxAudioAnalyzerUnit.cpp:function essentia::TypeProxy::checkType(std::type_info const&, std::type_info const&) const: error: undefined reference to 'essentia::nameOfType[abi:cxx11](std::type_info const&)' /home/red/OF/addons/obj/linux64/Release/ofxAudioAnalyzer/src/ofxAudioAnalyzerUnit.o:ofxAudioAnalyzerUnit.cpp:function essentia::TypeProxy::checkType(std::type_info const&, std::type_info const&) const: error: undefined reference to 'essentia::nameOfType[abi:cxx11](std::type_info const&)' /home/red/OF/addons/obj/linux64/Release/ofxAudioAnalyzer/src/ofxAudioAnalyzerUnit.o:ofxAudioAnalyzerUnit.cpp:function essentia::EssentiaFactory::create_i(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, essentia::Parameter const&) const: error: undefined reference to 'essentia::standard::Algorithm::processingMode[abi:cxx11]' /home/red/OF/addons/obj/linux64/Release/ofxAudioAnalyzer/src/ofxAudioAnalyzerUnit.o:ofxAudioAnalyzerUnit.cpp:function essentia::EssentiaFactory::create_i(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, essentia::Parameter const&) const: error: undefined reference to 'essentia::standard::Algorithm::processingMode[abi:cxx11]' /home/red/OF/addons/obj/linux64/Release/ofxAudioAnalyzer/src/ofxAudioAnalyzerUnit.o:ofxAudioAnalyzerUnit.cpp:function essentia::EssentiaFactory::create_i(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, essentia::Parameter const&) const: error: undefined reference to 'essentia::Logger::debug(essentia::DebuggingModule, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, bool)' /home/red/OF/addons/obj/linux64/Release/ofxAudioAnalyzer/src/ofxAudioAnalyzerUnit.o:ofxAudioAnalyzerUnit.cpp:function essentia::EssentiaFactory::create_i(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, essentia::Parameter const&) const: error: undefined reference to 'essentia::ParameterMap::add(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, essentia::Parameter const&)' /home/red/OF/addons/obj/linux64/Release/ofxAudioAnalyzer/src/ofxAudioAnalyzerUnit.o:ofxAudioAnalyzerUnit.cpp:function essentia::EssentiaFactory::create_i(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, essentia::Parameter const&) const: error: undefined reference to 'essentia::standard::Algorithm::processingMode[abi:cxx11]' /home/red/OF/addons/obj/linux64/Release/ofxAudioAnalyzer/src/ofxAudioAnalyzerUnit.o:ofxAudioAnalyzerUnit.cpp:function essentia::EssentiaFactory::create_i(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, essentia::Parameter const&) const: error: undefined reference to 'essentia::standard::Algorithm::processingMode[abi:cxx11]' /home/red/OF/addons/obj/linux64/Release/ofxAudioAnalyzer/src/ofxAudioAnalyzerUnit.o:ofxAudioAnalyzerUnit.cpp:function essentia::EssentiaFactory::create_i(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, essentia::Parameter const&) const: error: undefined reference to 'essentia::Logger::debug(essentia::DebuggingModule, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, bool)' /home/red/OF/addons/obj/linux64/Release/ofxAudioAnalyzer/src/ofxAudioAnalyzerUnit.o:ofxAudioAnalyzerUnit.cpp:function essentia::EssentiaFactory::create_i(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, essentia::Parameter const&) const: error: undefined reference to 'essentia::Logger::debug(essentia::DebuggingModule, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, bool)' /home/red/OF/addons/obj/linux64/Release/ofxAudioAnalyzer/src/ofxAudioAnalyzerUnit.o:ofxAudioAnalyzerUnit.cpp:function essentia::EssentiaFactory::create_i(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, essentia::Parameter const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, essentia::Parameter const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, essentia::Parameter const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, essentia::Parameter const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, essentia::Parameter const&) const: error: undefined reference to 'essentia::Logger::debug(essentia::DebuggingModule, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, bool)' /home/red/OF/addons/obj/linux64/Release/ofxAudioAnalyzer/src/ofxAudioAnalyzerUnit.o:ofxAudioAnalyzerUnit.cpp:function essentia::EssentiaFactory::create_i(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, essentia::Parameter const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, essentia::Parameter const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, essentia::Parameter const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, essentia::Parameter const&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&,

Etc...

On Ubuntu 16

Linking bin/myCreativeSketch for linux64 g++ -o bin/myCreativeSketch obj/linux64/Release/src/main.o obj/linux64/Release/src/ofApp.o /home/red/OF/addons/obj/linux64/Release/ofxAudioAnalyzer/src/ofxAAOnsetsAlgorithm.o /home/red/OF/addons/obj/linux64/Release/ofxAudioAnalyzer/src/ofxAudioAnalyzer.o /home/red/OF/addons/obj/linux64/Release/ofxAudioAnalyzer/src/ofxAudioAnalyzerAlgorithms.o /home/red/OF/addons/obj/linux64/Release/ofxAudioAnalyzer/src/ofxAAMultiPitchKlapuriAlgorithm.o /home/red/OF/addons/obj/linux64/Release/ofxAudioAnalyzer/src/ofxAudioAnalyzerUnit.o /home/red/OF/libs/openFrameworksCompiled/lib/linux64/libopenFrameworks.a /home/red/OF/addons/ofxAudioAnalyzer/libs/essentia/lib/linux64/libessentia.a /home/red/OF/addons/ofxAudioAnalyzer/libs/fftw3f/lib/linux64/libfftw3f.a -Wl,-rpath=./libs:./bin/libs -Wl,--as-needed -Wl,--gc-sections -fuse-ld=gold -L/home/red/OF/libs/fmodex/lib/linux64/ -lfmodex /home/red/OF/libs/kiss/lib/linux64/libkiss.a /home/red/OF/libs/poco/lib/linux64/libPocoZip.a /home/red/OF/libs/poco/lib/linux64/libPocoNet.a /home/red/OF/libs/poco/lib/linux64/libPocoXML.a /home/red/OF/libs/poco/lib/linux64/libPocoFoundation.a /home/red/OF/libs/poco/lib/linux64/libPocoRedis.a /home/red/OF/libs/poco/lib/linux64/libPocoJSON.a /home/red/OF/libs/poco/lib/linux64/libPocoUtil.a /home/red/OF/libs/poco/lib/linux64/libPocoCrypto.a /home/red/OF/libs/poco/lib/linux64/libPocoNetSSL.a /home/red/OF/libs/poco/lib/linux64/libPocoEncodings.a /home/red/OF/libs/tess2/lib/linux64/libtess2.a -lz -lgstapp-1.0 -lgstvideo-1.0 -lgstbase-1.0 -lgstreamer-1.0 -ludev -lfontconfig -lfreetype -lsndfile -lopenal -lcurl -lglfw -lpulse-simple -lpulse -lasound -lGLEW -lGLU -lGL -lgtk-3 -lgdk-3 -lpangocairo-1.0 -lpango-1.0 -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0 -lmpg123 -lglut -lX11 -lXrandr -lXxf86vm -lXi -lXcursor -ldl -lpthread -lfreeimage -lboost_filesystem -lboost_system -lpugixml -luriparser -lXinerama -lrtaudio /home/red/OF/addons/obj/linux64/Release/ofxAudioAnalyzer/src/ofxAudioAnalyzerUnit.o:ofxAudioAnalyzerUnit.cpp:function ofxAudioAnalyzerUnit::setup(int, int): error: undefined reference to 'essentia::standard::Algorithm::input(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' /home/red/OF/addons/obj/linux64/Release/ofxAudioAnalyzer/src/ofxAudioAnalyzerUnit.o:ofxAudioAnalyzerUnit.cpp:function ofxAudioAnalyzerUnit::setup(int, int): error: undefined reference to 'essentia::standard::Algorithm::output(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' /home/red/OF/addons/obj/linux64/Release/ofxAudioAnalyzer/src/ofxAudioAnalyzerUnit.o:ofxAudioAnalyzerUnit.cpp:function ofxAudioAnalyzerUnit::setup(int, int): error: undefined reference to 'essentia::standard::Algorithm::input(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' /home/red/OF/addons/obj/linux64/Release/ofxAudioAnalyzer/src/ofxAudioAnalyzerUnit.o:ofxAudioAnalyzerUnit.cpp:function ofxAudioAnalyzerUnit::setup(int, int): error: undefined reference to 'essentia::standard::Algorithm::output(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' /home/red/OF/addons/obj/linux64/Release/ofxAudioAnalyzer/src/ofxAudioAnalyzerUnit.o:ofxAudioAnalyzerUnit.cpp:function ofxAudioAnalyzerUnit::setup(int, int): error: undefined reference to 'essentia::standard::Algorithm::input(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' /home/red/OF/addons/obj/linux64/Release/ofxAudioAnalyzer/src/ofxAudioAnalyzerUnit.o:ofxAudioAnalyzerUnit.cpp:function ofxAudioAnalyzerUnit::setup(int, int): error: undefined reference to 'essentia::standard::Algorithm::output(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' /home/red/OF/addons/obj/linux64/Release/ofxAudioAnalyzer/src/ofxAudioAnalyzerUnit.o:ofxAudioAnalyzerUnit.cpp:function ofxAudioAnalyzerUnit::setup(int, int): error: undefined reference to 'essentia::standard::Algorithm::input(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' /home/red/OF/addons/obj/linux64/Release/ofxAudioAnalyzer/src/ofxAudioAnalyzerUnit.o:ofxAudioAnalyzerUnit.cpp:function ofxAudioAnalyzerUnit::setup(int, int): error: undefined reference to 'essentia::standard::Algorithm::output(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&)' /home/red/OF/addons/obj/linux64/Release/ofxAudioAnalyzer/src/ofxAudioAnalyzerUnit.o:ofxAudioAnalyzerUnit.cpp:function essentia::TypeProxy::checkType(std::type_info const&, std::type_info const&) const: error: undefined reference to 'essentia::nameOfType[abi:cxx11](std::type_info const&)' /home/red/OF/addons/obj/linux64/Release/ofxAudioAnalyzer/src/ofxAudioAnalyzerUnit.o:ofxAudioAnalyzerUnit.cpp:function essentia::TypeProxy::checkType(std::type_info const&, std::type_info const&) const: error: undefined reference to 'essentia::nameOfType[abi:cxx11](std::type_info const&)' /home/red/OF/addons/obj/linux64/Release/ofxAudioAnalyzer/src/ofxAudioAnalyzerUnit.o:ofxAudioAnalyzerUnit.cpp:function essentia::EssentiaFactory::create_i(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, essentia::Parameter const&) const: error: undefined reference to 'essentia::standard::Algorithm::processingMode[abi:cxx11]' /home/red/OF/addons/obj/linux64/Release/ofxAudioAnalyzer/src/ofxAudioAnalyzerUnit.o:ofxAudioAnalyzerUnit.cpp:function essentia::EssentiaFactory::create_i(std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::cxx11::basic_string<char, std::char_traits, std::allocator > const&, essentia::Parameter const&) const: error: undefined reference to 'essentia::standard::Algorithm::processingMode[abi:cxx11]' /home/red/OF/addons/obj/linux64/Release/ofxAudioAnalyzer

Etc...

ratmother commented 5 years ago

This problem has been 'fixed' (the addon runs) by changing bool ofSoundPlayerExtended::mpg123ReadFile(string path,vector & buffer,vector & fftAuxBuffer) to bool ofSoundPlayerExtended::mpg123ReadFile(const std::filesystem::path& path,std::vector & buffer,std::vector & fftAuxBuffer), and removing some ofLogErrors which referenced getMpg123EncodingString(stream_encoding).