Linux build of HISE
-
Hello Everybody!
I've tried to build HISE on Ubuntu Studio 16.04.3 64-bit,
but it stops at the point where the last line says "Linking HISE Standalone".
This happens right after the "Compiling juce_tracktion_marketplace.cpp" line.
All this happens in the terminal, but everything else looks the same as in Dave's Windows HISE build video on YouTube.I also made a build with Debug and Release in the Makefile, but of course it didn't change the thing, so it still doesn't work.
I also disabled the IPP in Projucer, but it didn't help either.
As I opened and saved the HISE Standalone project in Projucer,
Projucer tried to update itself,
but I clicked the "Cancel" button,
so I did the saving with the Projucer version that comes with the GitHub Clone/Download,
which is 4.3.0.I also have a few warnings while building,
but I don't know what exactly to do about them.I have the "build" folder,
and also a sub-folder in the "build" folder named "Intermediate" with a lot of files in it,
and I have a "HISE Standalone" executable in it,
but for some reason it doesn't execute,
it just won't start.
Am I missing something here?What should I do, any idea?
Thank you for your help!
THIS IS FROM THE TERMINAL (from START to (not) FINISH):
Compiling DspUnitTests.cpp
Compiling HiseEventBufferUnitTests.cpp
Compiling MainComponent.cpp
Compiling Main.cpp
Compiling BinaryData.cpp
Compiling hi_backend.cpp
In file included from ../../../../../HISE-master/hi_backend/hi_backend.cpp:62:0,
from ../../JuceLibraryCode/hi_backend.cpp:9:
../../../../../HISE-master/hi_backend/backend/CompileExporter.cpp: In member function ‘CompileExporter::ErrorCodes CompileExporter::compileSolution(CompileExporter::BuildOption, CompileExporter::TargetTypes)’:
../../../../../HISE-master/hi_backend/backend/CompileExporter.cpp:934:47: warning: ignoring return value of ‘int system(const char*)’, declared with attribute warn_unused_result [-Wunused-result]
system(permissionCommand.getCharPointer());
^
../../../../../HISE-master/hi_backend/backend/CompileExporter.cpp: In static member function ‘static void CompileExporter::BatchFileCreator::createBatchFile(CompileExporter*, CompileExporter::BuildOption, CompileExporter::TargetTypes)’:
../../../../../HISE-master/hi_backend/backend/CompileExporter.cpp:1927:43: warning: ignoring return value of ‘int system(const char*)’, declared with attribute warn_unused_result [-Wunused-result]
system(lineEndChange.getCharPointer());
^
At global scope:
cc1plus: warning: unrecognized command line option ‘-Wno-inconsistent-missing-override’
Compiling hi_components.cpp
Compiling hi_core.cpp
Compiling hi_dsp.cpp
Compiling hi_dsp_library.cpp
Compiling hi_lac.cpp
Compiling hi_modules.cpp
Compiling hi_sampler.cpp
Compiling hi_scripting.cpp
Compiling juce_audio_basics.cpp
Compiling juce_audio_devices.cpp
Compiling juce_audio_formats.cpp
Compiling juce_audio_processors.cpp
In file included from ../../../../JUCE/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:55:0,
from ../../../../JUCE/modules/juce_audio_processors/juce_audio_processors.cpp:153,
from ../../JuceLibraryCode/juce_audio_processors.cpp:9:
../../../../JUCE/modules/juce_audio_processors/format_types/juce_VSTMidiEventList.h:37:7: warning: ‘juce::VSTMidiEventList’ has a field ‘juce::VSTMidiEventList::events’ whose type uses the anonymous namespace
class VSTMidiEventList
^
In file included from ../../../../JUCE/modules/juce_audio_processors/juce_audio_processors.cpp:153:0,
from ../../JuceLibraryCode/juce_audio_processors.cpp:9:
../../../../JUCE/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:325:7: warning: ‘juce::ModuleHandle’ has a field ‘juce::ModuleHandle::moduleMain’ whose type uses the anonymous namespace
class ModuleHandle : public ReferenceCountedObject
^
../../../../JUCE/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:325:7: warning: ‘juce::ModuleHandle’ has a field ‘juce::ModuleHandle::customMain’ whose type uses the anonymous namespace
../../../../JUCE/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:589:7: warning: ‘juce::VSTPluginInstance’ has a field ‘juce::VSTPluginInstance::vstEffect’ whose type uses the anonymous namespace
class VSTPluginInstance : public AudioPluginInstance,
^
../../../../JUCE/modules/juce_audio_processors/format_types/juce_VSTPluginFormat.cpp:589:7: warning: ‘juce::VSTPluginInstance’ has a field ‘juce::VSTPluginInstance::vstHostTime’ whose type uses the anonymous namespace
cc1plus: warning: unrecognized command line option ‘-Wno-inconsistent-missing-override’
Compiling juce_audio_utils.cpp
Compiling juce_core.cpp
Compiling juce_cryptography.cpp
Compiling juce_data_structures.cpp
Compiling juce_events.cpp
Compiling juce_graphics.cpp
Compiling juce_gui_basics.cpp
Compiling juce_gui_extra.cpp
Compiling juce_opengl.cpp
Compiling juce_tracktion_marketplace.cpp
Linking HISE Standalone
lacipor@laciporpc:~/laciporpcc/downloads/HISE-master/projects/standalone/Builds/LinuxMakefile$ sudo make
[sudo] password for lacipor:
Linking HISE Standalone -
While we're digging up this old thread I too am having an issue with HISE on Linux Mint. The build completes just fine, but when I try and run the binary via the terminal I get this.
JUCE v4.3.0 JUCE Assertion failure in UtilityClasses.h:489 terminate called after throwing an instance of 'juce::String' Aborted
I tried enabling JACK in projucer (I'd previously disabled it for some reason I can't recall) now I get this build error:
In file included from ../../JuceLibraryCode/juce_audio_devices.cpp:9:0: ../../../../JUCE/modules/juce_audio_devices/juce_audio_devices.cpp:119:25: fatal error: jack/jack.h: No such file or directory #include <jack/jack.h>
-
Not sure about the JACK thing, but I'll take a look about the other issue. One thing however is that you are running a Debug build on Linux with vastly decreased performance (otherwise you wouldn't hit an assertion failure). That error looks like there is going something wrong and instead of the error being handled by the script engine it slips through and calls abort.
-
I tried it set to release too. I have an older version on my laptop which builds and runs fine so I'm going to play spot the difference tomorrow and see if I can find anything obvious.
-
I think there is a dependency issue. The latest github version builds and runs on my laptop perfectly but I'm having trouble on my main system. I changed to Release mode, and installed
sudo apt-get install libjack-jackd2-dev
and that got rid of the jack error but when I run it I get thejuce::String
error again.Cannot lock down 82274202 byte memory area (Cannot allocate memory) terminate called after throwing an instance of 'juce::String' Aborted
Update: Actually I'm starting to think the issue is with my jack configuration. On my laptop I'm using Cadence but on my PC I'm using qjackctl because I get less latency with it.
If I close jack I get this mess when trying to run HISE.Cannot connect to server socket err = No such file or directory Cannot connect to server request channel jack server is not running or cannot be started JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for 4294967295, skipping unlock JackShmReadWritePtr::~JackShmReadWritePtr - Init not done for 4294967295, skipping unlock terminate called after throwing an instance of 'juce::String' Aborted
-
I managed to get rid of the memory lock down thing by increasing the limit in etc/security/limit.config to 1000000. Now there's just the
juce::String
assertion issue to solve. -
I'm getting the same error on my laptop now too :(
After looking at this line in the source I'm thinking that this is still some memory issue... any ideas @Christoph-Hart?
JUCE Assertion failure in UtilityClasses.h:489
-
Hmm, everything is running fine for me, but I am not doing JACK or anything serious because I am just running it inside VirtualBox (the graphics are messed up but I think the culprit is the VM since Visual Code behaves similar).
The problem is that the exception handling on Linux is a bit more crude than on OSX or Windows and calls terminate whenever an error is raised. Can you hook up a Debugger and see where it throws the String?
-
This is what I get from GDB, not sure how helpful it is though:
[Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". JUCE v4.3.0 [New Thread 0x7ffff4a2a700 (LWP 20338)] [New Thread 0x7fffeffff700 (LWP 20339)] [New Thread 0x7ffff7f84700 (LWP 20340)] [New Thread 0x7ffff7f03700 (LWP 20341)] [Thread 0x7ffff7f03700 (LWP 20341) exited] [Thread 0x7ffff7f84700 (LWP 20340) exited] [New Thread 0x7fffe7fff700 (LWP 20342)] [Thread 0x7fffe7fff700 (LWP 20342) exited] [New Thread 0x7fffe7fff700 (LWP 20343)] [New Thread 0x7fffe77fe700 (LWP 20344)] [New Thread 0x7fffe6ffd700 (LWP 20345)] [Thread 0x7fffe6ffd700 (LWP 20345) exited] JUCE Assertion failure in UtilityClasses.h:489 Thread 1 "HISE Standalone" received signal SIGTRAP, Trace/breakpoint trap. 0x00007ffff5dde767 in kill () at /build/glibc-bfm8X4/glibc-2.23/signal/../sysdeps/unix/syscall-template.S:84 84 /build/glibc-bfm8X4/glibc-2.23/signal/../sysdeps/unix/syscall-template.S: No such file or directory.
-
Unfortunately not really. I think I need to crank up my Linux skills for fixing this one :)
-
I'm digging away at it too, it's weird that it was working on my previous Linux Mint set up but now it's not. I've put Cadence on my laptop to see if it makes any difference from using qjackctl, so far the only difference is it fixes the memory lock issues (it sets up the audio group config file so I don't have to do it manually). I also think libjack-jackd2-dev should be listed as a dependency for building on Linux...
-
I've completely removed JACK now and set the JACK flag to 0 in projucer. I'm still getting the
JUCE Assertion failure in UtilityClasses.h:489
message though when trying to run it but I think this rules out JACK as the cause.Is there a simple way to open the HISE project in code blocks? I might be able to do some more useful debugging.
-
I couldn't get it running in codeblocks but I found a front end for gdb which is giving me a little more info. It seems (but I could be way off) that the crash occurs in PresetHandler.cpp at this line
2161 ScopedPointer<Processor> p = t->createProcessor(j, "X");
Update:
I just putreturn false;
at the beginning of that functionXmlElement * PresetHandler::buildFactory(FactoryType *t, const String &factoryName) { return false;
recompiled and HISE opens up :) Looks like my debugging skills aren't too shabby. I don't know how to fix it properly though so I'll leave that to you :) -
Is it possible to export to a VSTi on Linux yet? I'm only seeing options for VS2013 and VS2015 when I select VSTi. Should I be seeing something like G++/GCC?
-
No I haven't added automatic export for Linux yet. However you might try to export as Standalone app / VST plugin, then open the AutogeneratedProject.jucer file, add a Linux Makefile target, save and run it and with a little bit of luck it may work :)
-
Unfortunately only the standalone Mac/iOS options show up in the dialog.
-
Ah this is no problem the logic behind this is
If windows then show Standalone app
Else show Standalone OSXso I just didn't handle the Linux case when creating the dialogue options
-
I get a compilation error
-
I've just added support for exporting Standalone apps in Linux, but you have to manually launch the autogenerated bash script in the
Binaries
folder (somehow I can't spawn a process on Linux that opens a terminal automatically).- Load the instrument
- File -> Export -> Export as Standalone App (VST plugin will follow soon)
- Press OK to open the
Binaries
folder. - Open a terminal at the location and run
./batchCompileLinux.sh
-
Thanks Christoph, looking forward to testing this