J-M-L:
that’s what those were called long before Arduino And some have even lib in their name
and perhaps long before PCs and C++. I understand that library can refer to many things
unix/linux library files have a .a extension and are pre-compiled and only the relevant functions are extracted during linking. The Linux libc.a is 500K+ bytes I do see some library files under the arduino directory, including libc.a (250k) and libm.a.
From what i've seen, when you install an Arduino library such as SoftwareSerial, a sub directory is created and typically under the /src are some .h and .cpp file. I believe those file are compiled each time you build you app. in other words they aren't a .a library file (allowing them to be built for different processor architectures)
for example, when i look under /users/lenovo/AppData/Local/Temp/arduino_build_999036, for a fairly simple Arduino program, i find
Temp ls -R arduino_build_999036/
arduino_build_999036/:
Tst.ino.eep Tst.ino.with_bootloader.hex includes.cache sketch
Tst.ino.elf build.options.json libraries
Tst.ino.hex core preproc
arduino_build_999036/core:
CDC.cpp.d IPAddress.cpp.o WMath.cpp.d wiring.c.d
CDC.cpp.o PluggableUSB.cpp.d WMath.cpp.o wiring.c.o
HardwareSerial.cpp.d PluggableUSB.cpp.o WString.cpp.d wiring_analog.c.d
HardwareSerial.cpp.o Print.cpp.d WString.cpp.o wiring_analog.c.o
HardwareSerial0.cpp.d Print.cpp.o abi.cpp.d wiring_digital.c.d
HardwareSerial0.cpp.o Stream.cpp.d abi.cpp.o wiring_digital.c.o
HardwareSerial1.cpp.d Stream.cpp.o core.a wiring_pulse.S.d
HardwareSerial1.cpp.o Tone.cpp.d hooks.c.d wiring_pulse.S.o
HardwareSerial2.cpp.d Tone.cpp.o hooks.c.o wiring_pulse.c.d
HardwareSerial2.cpp.o USBCore.cpp.d main.cpp.d wiring_pulse.c.o
HardwareSerial3.cpp.d USBCore.cpp.o main.cpp.o wiring_shift.c.d
HardwareSerial3.cpp.o WInterrupts.c.d new.cpp.d wiring_shift.c.o
IPAddress.cpp.d WInterrupts.c.o new.cpp.o
arduino_build_999036/libraries:
arduino_build_999036/preproc:
ctags_target_for_gcc_minus_e.cpp
arduino_build_999036/sketch:
Tst.ino.cpp Tst.ino.cpp.d Tst.ino.cpp.o
there are various standard components: HardwareSerial, Stream, Print, Tone, ... that are all re-compiled from the .cpp file. These could easily have been precompiled into a .a file. But Arduino programs are typically small and the overhead to re-compile is small
however, the string routines are in a library, the C standard library, libc.a. However, it does not solely contain the string routines. The Arduino version also includes File, time, some math (e.g. sin) functions, over 135. The standard (non Arduino) unix version has ~1700 functions.
so while the c string functions are in a library, i wouldn't say there is a string library. They are just standard c functions. When I build .cpp programs on my laptop, i don't need to specify any extra libraries. I would need to specify the math library, -lm if I were using some math functions. And as far as I know, you don't need to link to any special library to use Strings. So maybe neither is a library.
perhaps for you it's just semantics. For me there are distinctions that are sometime necessary to build code.