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.

1 Answer 1

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. Sep 4, 2019 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 Sep 4, 2019 at 9:58
  • 2
    /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 Sep 4, 2019 at 10:12
  • 1
    You need to extract the entire contents of the tar.xz file into /usr/local. Since the tar.xz file contains bin/ and include/ directories you will end up with a /usr/local/bin/clang++ file. Then when you run clang++ you should see 3.9. Sep 4, 2019 at 10:21
  • 2
    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 :( Sep 4, 2019 at 10:50

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .