zoukankan      html  css  js  c++  java
  • pthread动态库命名规则

    Library naming
    --------------

    Because the library is being built using various exception
    handling schemes and compilers - and because the library
    may not work reliably if these are mixed in an application,
    each different version of the library has it's own name.

    Note 1: the incompatibility is really between EH implementations
    of the different compilers. It should be possible to use the
    standard C version from either compiler with C++ applications
    built with a different compiler. If you use an EH version of
    the library, then you must use the same compiler for the
    application. This is another complication and dependency that
    can be avoided by using only the standard C library version.

    Note 2: if you use a standard C pthread*.dll with a C++
    application, then any functions that you define that are
    intended to be called via pthread_cleanup_push() must be
    __cdecl.

    Note 3: the intention was to also name either the VC or GC
    version (it should be arbitrary) as pthread.dll, including
    pthread.lib and libpthread.a as appropriate. This is no longer
    likely to happen.

    Note 4: the compatibility number was added so that applications
    can differentiate between binary incompatible versions of the
    libs and dlls.

    In general:
    pthread[VG]{SE,CE,C}[c].dll
    pthread[VG]{SE,CE,C}[c].lib

    where:
    [VG] indicates the compiler
    V - MS VC, or
    G - GNU C

    {SE,CE,C} indicates the exception handling scheme
    SE - Structured EH, or
    CE - C++ EH, or
    C - no exceptions - uses setjmp/longjmp

    c - DLL compatibility number indicating ABI and API
    compatibility with applications built against
    a snapshot with the same compatibility number.
    See 'Version numbering' below.

    The name may also be suffixed by a 'd' to indicate a debugging version
    of the library. E.g. pthreadVC2d.lib. Debugging versions contain
    additional information for debugging (symbols etc) and are often not
    optimised in any way (compiled with optimisation turned off).

    Examples:
    pthreadVSE.dll (MSVC/SEH)
    pthreadGCE.dll (GNUC/C++ EH)
    pthreadGC.dll (GNUC/not dependent on exceptions)
    pthreadVC1.dll (MSVC/not dependent on exceptions - not binary
    compatible with pthreadVC.dll)
    pthreadVC2.dll (MSVC/not dependent on exceptions - not binary
    compatible with pthreadVC1.dll or pthreadVC.dll)

    The GNU library archive file names have correspondingly changed to:

    libpthreadGCEc.a
    libpthreadGCc.a

  • 相关阅读:
    Could not get lock /var/lib/apt/lists/lock
    使用vmware提示无法打开内核设备 \.Globalvmx86: 系统找不到指定的文件
    Linux 下安装 MATLAB
    超级干货:Linux常用命令 & 实用命令万字总结!
    GNB 配置图图解
    GNB Linux 部署说明
    解决Firefox启动、打开网页慢、占用内存多
    【Git教程】如何清除git仓库的所有提交记录,成为一个新的干净仓库
    mount --bind和硬连接的区别
    彻底删除 Windows Defender
  • 原文地址:https://www.cnblogs.com/guoxiaoqian/p/4380643.html
Copyright © 2011-2022 走看看