I am using Ubuntu Linux and I always turn off the Web Browser setting in the Projucer, because I can’t download webkit2gtk-4.0 anywhere as it is just too old. That works for my audio plugins, but I wanted to give tracktion engine a try, which spits out a ton of errors during linking, all of which seem to be connected with webkit2gtk-4.0 is some way. Tracktion engine requires juce_gui_extra, which requires webkit2gtk-4.0 to really work. I tried everything from preprocessor definitions and changing the source code to downloading webkit2gtk-4.0 from some really old website and trying to create a pkg_config file for it. Nothing worked.
Does somebody know how to use webkit2gtk-4.1 (which I have installed) instead of webkit2gtk-4.0?
Shouldn’t JUCE ask for webkit2gtk-4.1 as the documentation states?
Is there a way to use tracktion engine without the web components?
Is the JUCE download from the website just outdated?
Anything that answers any of my questions would be really appreciated.
I managed to get webkit2gtk-4.0 installed, which took a few hours to find all of the files and dependencies, but now I get these errors:
/usr/bin/ld: build/intermediate/Debug/include_tracktion_engine_playback_c33296c2.o: in function `std::atomic<juce::Range<long> >::load(std::memory_order) const':
/usr/include/c++/13/atomic:297:(.text._ZNKSt6atomicIN4juce5RangeIlEEE4loadESt12memory_order[_ZNKSt6atomicIN4juce5RangeIlEEE4loadESt12memory_order]+0x40): undefined reference to `__atomic_load_16'
/usr/bin/ld: build/intermediate/Debug/include_tracktion_engine_playback_c33296c2.o: in function `std::atomic<tracktion::graph::PlayHead::SyncPositions>::load(std::memory_order) const':
/usr/include/c++/13/atomic:297:(.text._ZNKSt6atomicIN9tracktion5graph8PlayHead13SyncPositionsEE4loadESt12memory_order[_ZNKSt6atomicIN9tracktion5graph8PlayHead13SyncPositionsEE4loadESt12memory_order]+0x40): undefined reference to `__atomic_load_16'
/usr/bin/ld: build/intermediate/Debug/include_tracktion_engine_playback_c33296c2.o: in function `std::atomic<tracktion::graph::PlayHead::SyncPositions>::store(tracktion::graph::PlayHead::SyncPositions, std::memory_order)':
/usr/include/c++/13/atomic:279:(.text._ZNSt6atomicIN9tracktion5graph8PlayHead13SyncPositionsEE5storeES3_St12memory_order[_ZNSt6atomicIN9tracktion5graph8PlayHead13SyncPositionsEE5storeES3_St12memory_order]+0x68): undefined reference to `__atomic_store_16'
/usr/bin/ld: build/intermediate/Debug/include_tracktion_engine_playback_c33296c2.o: in function `std::atomic<juce::Range<long> >::store(juce::Range<long>, std::memory_order)':
/usr/include/c++/13/atomic:279:(.text._ZNSt6atomicIN4juce5RangeIlEEE5storeES2_St12memory_order[_ZNSt6atomicIN4juce5RangeIlEEE5storeES2_St12memory_order]+0x68): undefined reference to `__atomic_store_16'
collect2: error: ld returned 1 exit status
I don’t think it should need libgtk. Have you got NEEDS_WEB_BROWSER in your cmake anywhere? If you do, remove it and everything should build (we had this problem in Waveform recently on Ubuntu 24.04 and removing that option to juce_add_gui_application fixed it).
For the second set of errors, it sound like you need to link to -latomic?
Thank you so much! That solved all of my problems.
I simply use makefile to compile and I could probably just delete the part where webkit2gtk was mentioned, but I got it working so I will just leave it as is.
I also added the -latomic linker flag and the errors are gone.