I have a script that builds llvm/clang 3.42 from source (with configure+make). It runs smooth on ubuntu 14.04.5 LTS. When I upgraded to ubuntu 17.04, the build fails.
Here is the building script:
svn co https://llvm.org/svn/llvm-project/llvm/tags/RELEASE_342/final llvm svn co https://llvm.org/svn/llvm-project/cfe/tags/RELEASE_342/final llvm/tools/clang svn co https://llvm.org/svn/llvm-project/compiler-rt/tags/RELEASE_342/final llvm/projects/compiler-rt svn co https://llvm.org/svn/llvm-project/libcxx/tags/RELEASE_342/final llvm/projects/libcxx rm -rf llvm/.svn rm -rf llvm/tools/clang/.svn rm -rf llvm/projects/compiler-rt/.svn rm -rf llvm/projects/libcxx/.svn cd llvm ./configure \ --enable-optimized \ --disable-assertions \ --enable-targets=host \ --with-python="/usr/bin/python2" make -j `nproc` Here are the errors I get (TLDR: problems with definitions of malloc, calloc, realloc and free)
/usr/include/malloc.h:38:14: error: declaration conflicts with target of using declaration already in scope extern void *malloc (size_t __size) __THROW __attribute_malloc__ __wur; ^ /usr/include/stdlib.h:427:14: note: target of using declaration extern void *malloc (size_t __size) __THROW __attribute_malloc__ __wur; ^ /usr/lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3./stdlib.h:65:12: note: using declaration using std::malloc; ^ In file included from /home/oren/GIT/LatestKlee/llvm/projects/compiler-rt/lib/tsan/rtl/tsan_platform_linux.cc:47: /usr/include/malloc.h:41:14: error: declaration conflicts with target of using declaration already in scope extern void *calloc (size_t __nmemb, size_t __size) ^ /usr/include/stdlib.h:429:14: note: target of using declaration extern void *calloc (size_t __nmemb, size_t __size) ^ /usr/lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/stdlib.h:59:12: note: using declaration using std::calloc; ^ In file included from /home/oren/GIT/LatestKlee/llvm/projects/compiler-rt/lib/tsan/rtl/tsan_platform_linux.cc:47: /usr/include/malloc.h:49:14: error: declaration conflicts with target of using declaration already in scope extern void *realloc (void *__ptr, size_t __size) ^ /usr/include/stdlib.h:441:14: note: target of using declaration extern void *realloc (void *__ptr, size_t __size) ^ /usr/lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/stdlib.h:73:12: note: using declaration using std::realloc; ^ In file included from /home/oren/GIT/LatestKlee/llvm/projects/compiler-rt/lib/tsan/rtl/tsan_platform_linux.cc:47: /usr/include/malloc.h:53:13: error: declaration conflicts with target of using declaration already in scope extern void free (void *__ptr) __THROW; ^ /usr/include/stdlib.h:444:13: note: target of using declaration extern void free (void *__ptr) __THROW; ^ /usr/lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/stdlib.h:61:12: note: using declaration using std::free; ^ COMPILE: clang_linux/tsan-x86_64/x86_64: /home/oren/GIT/LatestKlee/llvm/projects/compiler-rt/lib/tsan/rtl/tsan_rtl_mutex.cc 4 errors generated. Makefile:267: recipe for target '/home/oren/GIT/LatestKlee/llvm/tools/clang/runtime/compiler-rt/clang_linux/tsan-x86_64/x86_64/SubDir.lib__tsan__rtl/tsan_platform_linux.o' failed make[5]: *** [/home/oren/GIT/LatestKlee/llvm/tools/clang/runtime/compiler-rt/clang_linux/tsan-x86_64/x86_64/SubDir.lib__tsan__rtl/tsan_platform_linux.o] Error 1 The default gcc version shipped with ubuntu 17.04 is 6.3. Maybe this is an issue of default C++ dialect used by gcc 6.3? Any help is very much appreciated, thanks!