相关疑难解决方法(0)

_GLIBCXX_USE_CXX11_ABI,GCC 4.8和ABI兼容性

我们收到了一些为linux编译的库(.a)(可能是用GCC 6.x编译的).

我们正在使用GCC 4.8,我们得到了类型的错误: undefined reference to std::__cxx11::basic_string尝试链接时.

通常,这可以通过确保所有单元都使用相同的_GLIBCXX_USE_CXX11_ABI标志进行编译来修复.但是,如果我理解正确,这是由GCC 5.1引入的.

  1. 有没有办法使这个工作与GCC 4.8或我们是否需要让人们用不同的方法重新编译库_GLIBCXX_USE_CXX11_ABI
  2. 我想如果我们能够切换到GCC> = 5.1,我们可以做到这一点吗?

谢谢!

c++ linux gcc c++11

14
推荐指数
1
解决办法
8918
查看次数

__cxa_atexit()和atexit()之间有什么区别

GCC文档中,我找到了该-fuse-cxa-atexit选项,并说明了以下内容:

完全符合标准的静态析构函数处理需要此选项

那两者有什么区别?在__cxa_atexit我的文档中我发现了以下内容:

__cxa_atexit()函数用于实现atexit()

我正在函数中实现静态(不要问为什么),我想知道用于调用析构函数的2中的哪一个.

我想我只有atexit()MSVC?那是问题吗?

我可以atexit()在任何地方使用并确保它的行为就像函数中的真实静态对象一样吗?

c++ atexit

5
推荐指数
1
解决办法
4171
查看次数

标签 统计

c++ ×2

atexit ×1

c++11 ×1

gcc ×1

linux ×1