I’m trying to build a program using clang++, on a Ubuntu 22.04 PC.
- clang version: Ubuntu clang version 14.0.0-1ubuntu1.1
- gcc version 11.4.0
The SW compiles and links fine using g++ with the following command line:
g++ -Wall -Wextra -std=c++17 -Wno-deprecated-declarations -ggdb -O0 -g3 -O0 --coverage -Isrc/cscs -Isrc/include -Ilibraries/swap32/EC/debian/include -Ilibraries/zmq/EC/debian/include -Ilibraries/liquid_dsp/EC/debian/include -Xlinker -Map=telemachus.map bin/file1.o bin/file2.o bin/file3.o -o bin/a.out -Llibraries/zmq/EC/debian -l:libzmq.a -Llibraries/swap32/EC/debian -l:libswap32.a -Llibraries/liquid_dsp/EC/debian/lib -l:libliquid.a -lpthread -lstdc++fs
But link fails with clangd++ when using this command line.
clang++ -Wall -Wextra -std=c++17 -Wno-deprecated-declarations -ggdb -O0 -g3 -O0 --coverage -Isrc/cscs -Isrc/include -Ilibraries/swap32/EC/debian/include -Ilibraries/zmq/EC/debian/include -Ilibraries/liquid_dsp/EC/debian/include -stdlib=libc++ -fsanitize=address bin/file1.o bin/file2.o bin/file3.o -o bin/a.out -Llibraries/zmq/EC/debian -l:libzmq.a -Llibraries/swap32/EC/debian -l:libswap32.a -Llibraries/liquid_dsp/EC/debian/lib -l:libliquid.a -lpthread
Error messages
- undefined reference to `std::__cxx11::basic_string<char, std::char_traits
- undefined reference to `vtable for std::__cxx11::basic_stringbuf<char,
- undefined reference to `vtable for std::basic_streambuf<char, std::char_traits >’
The command lines differ because:
- I had to remove any reference to stdc++fs when building with clang++
- I added the option -fsanitize=address (this is why I want to use clang++)
- I added option -stdlib=libc++, otherwise the code do not build
I do not understand why, when building with clang++ it seems I didn’t link the libraries, that are visible when using the g++.
Any help will be appreciated.
Giovanni