Gra*_*eme 10 c++ compiler-construction gcc
我对使用现代版本的GCC 4.4.x/4.5.x构建C++库有一些兼容性问题,其中旧版本的客户端,例如3.4.x/4.1.x. 已经提出的一个解决方案是编译目标文件并分发它们.然后,客户可以使用任何版本的GCC和相关的ABI进行链接.一些问题:
干杯,格雷姆
最安全的是给它们一个.so及其相应的标头和稳定的二进制API.要二进制稳定,API不应该接受或返回任何std::类型,std::string或者std::vector<>因为类型的二进制布局std::可能会从版本更改为版本.
它应该与libstdc ++和libgcc_s静态链接,这样您的客户端就不必链接特定版本的libstdc ++.
为方便起见,您还可以将所有.o文件打包到一个.a文件中,这样当您添加新的.o文件时,您的客户端不必更新其makefile以链接新的.o文件.