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

  • 相关阅读:
    配置连接远程ip的Redis
    SpringBoot保存数据报错:could not execute statement; SQL [n/a]; constraint [PRIMARY];nested exception is org.hibernate.exception.ConstraintViolationException: could not execute statement
    SpringBoot配置JDBC连接MySql数据库的时候遇到了报错:HikariPool-1
    SQLServer系统视图sysobjects中type字段说明
    Markdown常用语法
    博客园如何使用Markdown编辑器
    Chrome浏览器报错:ERR_UNSAFE_PORT
    Spring Boot Shiro
    Spring Security 安全认证
    Halo(十三)
  • 原文地址:https://www.cnblogs.com/guoxiaoqian/p/4380643.html
Copyright © 2011-2022 走看看