On Mon, Mar 24, 2014 at 6:38 PM, Tyler Brock <tyler.brock(a)gmail.com> wrote:
Hey Everyone,
I've been trying to use clang package on Amazon linux via EPEL and have
installed version 3.4-9.el6 yet am unable to compile even the simplest of
programs:
#include <iostream>
int main(){
std::cout << "Hello World" << std::endl;
}
Saving the above into a file named test.cpp and compiling with "clang++
test.cpp" produces the following error:
test.cpp:1:10: fatal error: 'iostream' file not found
#include <iostream>
^
1 error generated.
When attempting the same with gcc (g++) it works as expected so It seems
like the clang compiler cannot find the required C++ headers and library
files.
I have contacted Amazon AWS support and they verified that the issue is
reproducible by them running the latest version of Amazon Linux with
updated packages from EPEL.
I've tried installing devel headers for clang and multiple versions of
libstd++ which seem to be placed in /usr/include/c++/<gcc-version> but
which, when used by gcc, do not require the path to them be specified at
all. It just works.
I have a feeling the clang package is not built to work properly with
Amazon Linux as C++ headers and library files (for either for libc++ or
libstdc++) such as iostream should be found by default. Any help in
resolving the matter would be greatly appreciated.
It may also be worth noting that on CentOS the clang package seems to work
fine.
I'm the maintainer of clang in the EPEL, but honestly I know nothing about
Amazon Linux. Is it an "EL variant" or claim any sort of compatibility with
EL? A known issue even on EL/CentOS with clang is that much of the C++11/14
support won't work because of the old version of the standard library that
is available on EL. It sounds like this isn't your issue, but if C++11/14
support is desired, then the devtoolset (
http://rhn.redhat.com/errata/RHEA-2013-1226.html ) is the best route to
follow.