Installing clang 5.0 and using C++17
Install clang-5 from llvm.org repositores
First, we should add the llvm.org repositories to our sources lists, the line that we should add is:
deb http://apt.llvm.org/xenial/ llvm-toolchain-xenial-5.0 main
Open nano and add the above line to this file:
sudo nano /etc/apt/sources.list.d/llvm.list
Add the repository key, it will make apt
able to verify the downloaded packages.
wget -O - http://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add -
After that, update your lists:
sudo apt-get update
Then install clang-5:
sudo apt-get install clang-5.0 lldb-5.0 lld-5.0
It should work.
If you want to get a list of all available packages from this newly added repository:
grep -i package: /var/lib/apt/lists/apt.llvm* | cut -f3 -d: | sort | uniq
It will give you a list like:
clang-5.0
clang-5.0-doc
clang-5.0-examples
libclang-common-5.0-dev
...
You can then install whatever of them you want.
It may help your compile problem
The header file that has been mentioned does not exist in your error: stdarg.h
is a part of libstdc++-5-dev
package.
I've got this package on my machine, so if I run:
aptitude why libstdc++-5-dev
I will get:
i build-essential Depends g++ (>= 4:5.2)
i A g++ Depends g++-5 (>= 5.3.1-3~)
i A g++-5 Depends libstdc++-5-dev (= 5.4.0-6ubuntu1~16.04.4)
So it seems that installing the build-essential
package should solve this error of yours, cause I'm not sure what you've done.
Related videos on Youtube
Comments
-
Steve D over 1 year
I have been trying for 3 days to install clang 5.0 on an Ubuntu 16.04 machine. I have tried various guides, but nothing seems to work. When I try to simply grab the latest from SVN and build/install (as detailed here), trying to compile a simple program leads to:
> clang++ basic.cpp /usr/include/wchar.h:39:11: fatal error: 'stdarg.h' file not found # include <stdarg.h>
I then tried setting the
-DGCC_INSTALL_PREFIX
flag forcmake
before building, but that leads to the even better error:> clang++ basic.cpp fatal error: 'iostream' file not found #include <iostream>
The steps I've been following are (from the above guide):
> cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local/ \ -G "Unix Makefiles" path/to/llvm ... > make ... > make check-clang ... > make install-clang ...
Could someone treat me like an idiot and explain step-by-step how to install clang 5.0? Or point me to a guide that even basic fools like me can follow? If you also can explain how to build and install libc++ for C++17, I would be eternally grateful.
Update: It seems I'm not installing clang correctly, since this is the the output of a verbose compilation with clang:
... #include <...> search starts here: /usr/local/include /usr/include/x86_64-linux-gnu /usr/include
and this is the output for g++:
#include <...> search starts here: /usr/include/c++/5 /usr/include/x86_64-linux-gnu/c++/5 /usr/include/c++/5/backward /usr/lib/gcc/x86_64-linux-gnu/5/include /usr/local/include /usr/lib/gcc/x86_64-linux-gnu/5/include-fixed /usr/include/x86_64-linux-gnu /usr/include ...
-
Admin about 7 yearsWhat is the output of this command:
dpkg -l libstdc++-5-dev | tail -1
-
Admin about 7 yearsDo you have
build-essential
installed? -
Admin about 7 years@Ravexina:
ii libstdc++-5-dev:amd64 5.4.0-6ubuntu1~16.04.4 amd64 GNU Standard C++ Library v3 (development files)
-
Admin about 7 years@Ravexina: and yes, build-essential is installed.
-
-
Steve D about 7 yearsI have
build-essential
installed. But the output for myaptitude why libstdc++-5-dev
is exactly the same as yours, except there is no build-essential line. -
Ravexina about 7 years@SteveD I'm not sure, but maybe it's because part of your stuff are installed from repository and the other part is installed manually, maybe there are some mismatch in libraries version etc.
-
Steve D about 7 yearsI've updated the question body with what I think is the problem, perhaps you know how to fix it?
-
Ravexina about 7 years@SteveD the output are not so helpful in my eyes, maybe someones else find them more helpful. why don't you install it from repositories? I think there is a high chance your problem will go away..
-
Steve D about 7 yearsI need clang 5.0, which is not available in the repositories.
-
Ravexina about 7 years@SteveD, I updated my answer and added instruction to install clang-5 from official llvm.org repository ;) that would be the best approach to install clang-5 I guess.
-
Steve D about 7 yearsYou are an amazing person. This worked! After installing a few more things from that repo, I was able to compile some C++17 code too! To get the latest libc++, I had to follow the guide I linked above, and also the advice in this question. Thanks again!
-
Ravexina about 7 years@SteveD, You're welcome and glad that it was helpful ;)
-
Mark Ingram over 6 years
libstdc++-5-dev
came down as part of theclang-5.0
package dependencies.