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

  • 相关阅读:
    Mysql配置文件解析
    Mysql的视图
    Setup和 Hold
    洛谷 P2257
    洛谷 P3455
    洛谷 P1447
    洛谷 P1155
    洛谷 P1262
    洛谷 P4180
    洛谷 P5540
  • 原文地址:https://www.cnblogs.com/guoxiaoqian/p/4380643.html
Copyright © 2011-2022 走看看