Linux (glibc)
均为符号链接,不同版本指向不同的共享链接库,如libc-2.27.so
、libc-2.31.so
。
x86-64
/lib/x86_64-linux-gnu/libc.so.6
/lib/x86_64-linux-gnu/libm.so.6
/lib/x86_64-linux-gnu/libpthread.so.0
- ...
aarch64
/lib/aarch64-linux-gnu/libc.so.6
/lib/aarch64-linux-gnu/libm.so.6
/lib/aarch64-linux-gnu/libpthread.so.0
- ...
Linux (musl)
为符号链接,不同版本指向不同的共享链接库。
x86
/lib/libc.musl-x86.so.1
Darwin
x86-64
aarch64
/usr/lib/libc.dylib -> libSystem.dylib
/usr/lib/libm.dylib -> libSystem.dylib
/usr/lib/libpthread.dylib -> libSystem.dylib
- ...
因此,在Darwin上编译包含math.h
、pthread.h
的C语言源代码,不必通过-lm
、-pthread
动态链接/usr/lib/libm.dylib
、/usr/lib/libpthread.dylib
,因为/usr/lib/libm.dylib
、/usr/lib/libpthread.dylib
均为指向libSystem.dylib
的符号链接。
但是,为了提高代码的可移植性,仍建议在编译时使用-lm
、-pthread
。
Windows
在Windows系统上,往往存在不同版本的Microsoft Visual C++ Runtime
动态链接库(因系统版本而异);许多应用程序为了适配不同版本的系统,会使用自己的Microsoft Visual C++ Runtime
动态链接库,而非系统提供的。
C:\Windows\System32\msvcrt.dll
C:\Windows\System32\msvcr100.dll
C:\Windows\System32\msvcr110.dll
C:\Windows\System32\msvcr120.dll
- ...
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。