Pau*_*l R 5 c++ linux linker gcc shared-libraries
为了进行一些编译器评估工作,我需要能够在当前Linux平台上使用最新版本的gcc/clang构建可执行文件,然后将这些可执行文件复制到较旧的Linux平台进行测试和基准测试.当然这不起作用,因为较旧的平台具有各种所需共享库的旧版本.到目前为止,我已经尝试过:
LD_LIBRARY_PATH
以便它们被拾取 - 这会导致错误,例如:./foo:/lib64/libm.so.6:找不到版本`GLIBC_2.15'(./foo要求)
然后当通过添加更多.so文件解决这些问题时,我最终得到:
ls:重定位错误:./ libc.so.6:符号_dl_find_dso_for_object,版本GLIBC_PRIVATE未在文件ld-linux-x86-64.so.2中定义,带有链接时间参考
-static
在链接时使用,但是找不到各种库并且链接失败(可能是因为许多库仅以共享形式存在)我在各种旧的(类似但不重复的)StackOverflow问题中找到了一个可能的解决方案(例如将共享库编译成程序?),但这种方法似乎非常复杂 - 它需要遵循所有库依赖关系并将它们转换为静态库.具有讽刺意味的是,这些解决方案中使用的工具显然仅作为闭源二进制文件提供.
这似乎是一个常见问题 - 否则人们如何分发仅二进制应用程序?我错过了一个更简单的解决方案吗?
我刚尝试了Magic Ermine的试用版,它就像宣传的一样.由于这只是一个短期要求,我可能会坚持使用此解决方案,但请参阅下面的评论以获取其他建议.另请参阅同一作者Magic Ermine 的免费工具statifier.我现在关闭这个问题作为重复,但留在这里为任何未来的访问者.