Linux C ++库包含不同的GCC编译版本

时间:2014-11-19 08:26:14

标签: c++ linux gcc g++

感谢How to retrieve the GCC version used to compile a given ELF executable?我可以检查新构建的C ++库的GCC编译版本,它提供了以下信息:

GCC: (Ubuntu/Linaro 4.4.7-1ubuntu2) 4.4.7
GCC: (Debian 4.4.5-8) 4.4.5

似乎C ++库包含不同的GCC编译版本。我知道原因,这是因为创建最终库所需的一个库来自第三方库,它是二进制的,没有提供源代码。所以我的问题是:在这种情况下我可以安全地发布库吗?或者我应该获取第三方的源代码并使用一个GCC编译器构建所有代码?谢谢。

1 个答案:

答案 0 :(得分:1)

如果您在编译代码时成功使用了库二进制文件,则没有技术原因需要源代码再次构建它。如果库与您当前的构建环境不兼容,则依赖于二进制文件的代码将无法编译。 (如果包含适当的soname / version检查,则不应在没有警告的情况下编译)

也就是说,可能有一个原因是该库是二进制文件而不是与源一起分发。在此之前,您需要检查在发布库之前是否存在与使用库二进制文件相关联的legal要求。 注意这是法律问题,而不是技术问题。查找二进制文件附带的ReadmeLicense文件,并确定与其关联的许可证是什么。它可能会提供与其特定最终用户许可协议(EULA)的链接,也可能会引导您获得标准软件许可协议(即Creative-Commons,GPLv3等)

如果您的项目是商业项目,那么在您发布图书馆之前是合法的。 (知识产权诉讼非常昂贵......)