构建Linux静态库的目标

时间:2015-01-20 03:23:29

标签: linux gcc

我正在为x86或x64 Linux服务器程序员开发一个C ++库。该库不是开源的,编译后的输出应该是静态库(.a)文件。

对于大多数服务器程序员,我应该考虑哪些构建目标?到目前为止,我正在考虑这些:

  • GCC和CLANG
  • x86,x86_64
  • debug(打开断言,没有优化代码),释放(断言断言)[1]

总组合应为2 * 2 * 2 = 8。

这些足够吗?我应该考虑Ubuntu和CentOS吗?


[1]我使用assert()而不是运行时联结(下面的代码)仅用于一些对性能敏感的函数。在其他情况下,我使用运行时结点。生产代码更需要运行时联结,但它会对非常频繁调用的函数产生性能影响。例如,执行两个结指令和访问m_length所花费的时间比仅访问数组数据要长。

#define runtime_assert(x); { if (g_enableAssert && !(x)) ShowError(#x); }

#ifdef _DEBUG
#define assert(x) runtime_assert(x)
#else
#define assert(x) 0
#endif

bool g_enableAssert = true;

class Array
{
    int m_length;

    // doing runtime junction
    void Set(int index, int value)
    {
        runtime_assert(index>=0 && index<m_length);
        ...
    }

    // using assert
    void Set(int index, int value)
    {
        assert(index>=0 && index<m_length);
       ...
    }
}

0 个答案:

没有答案