Building mulle-clang on AWS EC2 (aarm64) experiment

· nat's blog


Amazon Linux 2 FAIL #

1sudo yum -y install clang ninja-build cmake git --setopt=install_weak_deps=0
2curl http://checkip.amazonaws.com
3
4curl -L -O https://github.com/mulle-cc/mulle-clang-project/archive/refs/tags/17.0.6.0.tar.gz
5tar xfz 17.0.6.0.tar.gz 
6mv mulle-clang-project-17.0.6.0 mulle-clang-project
7LIBRARY_PATH=/usr/lib/gcc/aarch64-amazon-linux/11/ CC=clang CXX=clang++ ./mulle-clang-project/clang/bin/cmake-ninja.linux

It fails eventually with this linker error:

[1/5] Linking CXX shared library /home/ec2-user/build/lib/aarch64-unknown-linux-gnu/libc++abi.so.1.0
FAILED: /home/ec2-user/build/lib/aarch64-unknown-linux-gnu/libc++abi.so.1.0 
: && /home/ec2-user/build/./bin/clang++ --target=aarch64-unknown-linux-gnu -fPIC -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wdelete-non-virtual-dtor -Wno-comment -fdiagnostics-color  -O3 -DNDEBUG  -Wl,-z,defs -Wl,-z,nodelete -shared -Wl,-soname,libc++abi.so.1 -o /home/ec2-user/build/lib/aarch64-unknown-linux-gnu/libc++abi.so.1.0 libcxxabi/src/CMakeFiles/cxxabi_shared_objects.dir/cxa_aux_runtime.cpp.o libcxxabi/src/CMakeFiles/cxxabi_shared_objects.dir/cxa_default_handlers.cpp.o libcxxabi/src/CMakeFiles/cxxabi_shared_objects.dir/cxa_demangle.cpp.o libcxxabi/src/CMakeFiles/cxxabi_shared_objects.dir/cxa_exception_storage.cpp.o libcxxabi/src/CMakeFiles/cxxabi_shared_objects.dir/cxa_guard.cpp.o libcxxabi/src/CMakeFiles/cxxabi_shared_objects.dir/cxa_handlers.cpp.o libcxxabi/src/CMakeFiles/cxxabi_shared_objects.dir/cxa_vector.cpp.o libcxxabi/src/CMakeFiles/cxxabi_shared_objects.dir/cxa_virtual.cpp.o libcxxabi/src/CMakeFiles/cxxabi_shared_objects.dir/stdlib_exception.cpp.o libcxxabi/src/CMakeFiles/cxxabi_shared_objects.dir/stdlib_stdexcept.cpp.o libcxxabi/src/CMakeFiles/cxxabi_shared_objects.dir/stdlib_typeinfo.cpp.o libcxxabi/src/CMakeFiles/cxxabi_shared_objects.dir/abort_message.cpp.o libcxxabi/src/CMakeFiles/cxxabi_shared_objects.dir/fallback_malloc.cpp.o libcxxabi/src/CMakeFiles/cxxabi_shared_objects.dir/private_typeinfo.cpp.o libcxxabi/src/CMakeFiles/cxxabi_shared_objects.dir/stdlib_new_delete.cpp.o libcxxabi/src/CMakeFiles/cxxabi_shared_objects.dir/cxa_exception.cpp.o libcxxabi/src/CMakeFiles/cxxabi_shared_objects.dir/cxa_personality.cpp.o libcxxabi/src/CMakeFiles/cxxabi_shared_objects.dir/cxa_thread_atexit.cpp.o   && :
/usr/bin/ld: cannot find crtbeginS.o: No such file or directory
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.
FAILED: runtimes/runtimes-stamps/runtimes-build /home/ec2-user/build/runtimes/runtimes-stamps/runtimes-build 
cd /home/ec2-user/build/runtimes/runtimes-bins && /usr/bin/cmake --build .
ninja: build stopped: subcommand failed.

OK the LIBRARY_PATH is already a hack. I gave up on this, I assume a more recent version of gcc or clang is needed.

Ubuntu SUCCESS #

Somehwhat limited success. You can not use clang-18 to build mulle-clang 17.0.6.0, because there is something wrong with the llvm code now, and the compiler complains. You can use gcc though...

1sudo apt install -y --no-install-recommends --no-install-suggests curl clang ninja-build cmake git btop
2curl http://checkip.amazonaws.com

Here I noticed, that I never mounted my user partition and that I did everything on the boot partition, that is has only 3GB space. Miraculously, I had enough space to even tar the results in '/opt' together (150MB).

1curl -L -O https://github.com/mulle-cc/mulle-clang-project/archive/refs/tags/17.0.6.0.tar.gz
2tar xfz 17.0.6.0.tar.gz 
3mv mulle-clang-project-17.0.6.0 mulle-clang-project
4sudo CC=gcc CXX=g++ ./mulle-clang-project/clang/bin/cmake-ninja.linux