2

I'm am using Ubuntu 19.04 trying to compile an older version of software (carla 0.7.0) that only allows getting compiled in clang-3.9

From my research online I have not found a way to install clang 3.9 on this version of Ubuntu and am wondering if there is a workaround that will let me install it in some way.

I managed to download clang 3.9 using the advice I got in the comments although the installation of carla 0.7 through tons of compilation errors in the boost section.

2

Firstly, my guess is that Carla 0.7.0 will build with a modern Clang version and it's this check that is probably saying it needs Clang 3.9:

# Require clang 3.9
command -v clang++-3.9 >/dev/null 2>&1 || {
  echo >&2 "clang 3.9 is required, but it's not installed.";
  echo >&2 "make sure you build Unreal Engine with clang 3.9 too.";
  exit 1;
}

If that's the case, you should probably just try symlinking /usr/bin/clang++ to /usr/bin/clang++3.9 and seeing if it compiles.

Assuming that doesn't work and it really wants that specific version of Clang or some kind of backwards incompatible changes were made between 3.9 and 6.0 of Clang, you can prebuilt binaries from Clang. You probably want the 3.9 for Ubuntu 16.04 since it's the "newest" one for this old version.

Once you have that you can extract all of that stuff to /usr/local as root. I did notice that it does not come with a clang++3.9 binary, so I'm not sure where the Carla developers got that from. You'll need to symlink /usr/local/bin/clang++ to /usr/local/bin/clang++3.9 to fix that too.

There could be more dragons if they've done something weird with how they find includes directories as well. If you can use a newer version of Carla you should since they now use CMake and many other proper build techniques.

8
  • I tried changing every mention if clang 3.9 to clang 8 which I already had installed and it does give some wierd errors. I'll try downloading clang 6 and do that again. – Ran Elgiser Sep 4 '19 at 9:46
  • I am not sure where to put the extracted folder in exactly, I found that my already installed clang 8 is inside /usr/lib/clang. you wrote that I should put it in /usr/local but I don't think thats the right spot, would love some clarification – Ran Elgiser Sep 4 '19 at 9:58
  • 1
    /usr/local is the correct spot to put binaries and files installed outside of the package system. You shouldn't overwrite files in /usr/bin or /usr/lib since those are files managed by the package manager, and it will get mad or at the least overwrite your files later. Look at your $PATH and you'll see that /usr/local/bin comes earlier and binaries from there will be found first, hence overriding the ones in /usr/bin – Kristopher Ives Sep 4 '19 at 10:12
  • So I put it in /usr/local. I feel like I should do something else. Right now /usr/local/bin is empty and running clang --version still prints 8.0 instead of the downloaded 3.9 – Ran Elgiser Sep 4 '19 at 10:20
  • 1
    One more step I had to do was symlink /usr/local/bin/clang++-3.9 to /usr/local/bin/clang++3.9 and now it does compile, although with tons and tons of errors :( – Ran Elgiser Sep 4 '19 at 10:50

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.