不同平台C语言标准库动态链接库的位置

Linux (glibc)

均为符号链接,不同版本指向不同的共享链接库,如libc-2.27.solibc-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.hpthread.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
  • ...

你可能感兴趣的:(不同平台C语言标准库动态链接库的位置)