libabc建议不要使用GCC构造函数/解析器,但解释相当简短:
不要使用gcc构造函数或析构函数,只能松散 你做。不要使用_fini()或_ini(),甚至不要使用自己的 显式库初始化器/析构函数。它不会 如果您的图书馆是从另一个图书馆间接提取的 甚至是共享模块(即dlopen())
有人可以解释问题是什么以及可能会破坏什么,尤其是在不同平台上的GCC?
答案 0 :(得分:1)
编写库时,最好的方法是不依赖于其他库,根本不依赖于状态数据(当然没有使用库中的状态和同步的全局变量),干净简单的接口,以及所有良好软件工程的其他基本原则。
libabc提供的README是一个相当不错的列表,列出了编写者发现使库难以使用或引入各种细微缺陷的所有方法。
作者所说的是很难预测您的图书馆将如何使用以及它将在何处运行,因此您应该对如何实现功能以及操作系统中的哪种服务以及您可能使用的任何其他库。
例如,请参阅Shared Library Constructor is not executed。