• 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

  • 相关阅读:
    Windows 无法启动xx服务 错误1053:服务没有及时响应启动或控制请求
    Nginx之解压编译安装-yellowcong
    SqlServer中的数据类型UniqueIdentifier
    Android利用Volley异步载入数据完整具体演示样例(二)
    蓝桥杯——历年真题之带分数
    联想教育应用使用说明(7.6版本号)——第4章 网络控制工具的使用
    oracle入门学习笔记
    Asp.Net实现JS前台带箭头的流程图方法总结!(个人笔记,信息不全)
    到底什么是RPC?
    Codeforces Round #336 (Div. 2) 608C Chain Reaction(dp)
  • 原文地址:https://www.cnblogs.com/guoxiaoqian/p/4380643.html
Copyright © 2020-2023  润新知