gpt4 book ai didi

c++ - 使用比平台提供的更新版本的 GCC 需要什么

转载 作者:太空狗 更新时间:2023-10-29 23:50:17 26 4
gpt4 key购买 nike

我正在考虑使用比我需要支持的某些平台 (GCC 4.1) 提供的更新版本的 GCC(例如 5.2)的可能性,因为我希望至少具有 C++11 功能,甚至可能是一些 C++14 的东西。我只提供一个可执行程序,而不是我希望平台用户能够链接的静态或共享库。

我能够编译 GCC 5.2 和 Boost 1.59(我目前使用的唯一带有 C++ API 的库)并让它与那些放在可执行文件旁边的库一起工作,并在测试系统上将 $ORIGIN 添加到 RPATH有 4.4。

但我不清楚我还需要做什么才能完全做到这一点并确保一切正确/安全。例如我注意到 libc、libm、libpthread 等不是 GCC 构建的一部分,它仍然使用系统版本,就像许多其他第三方库(例如 zlib、libpng 等)一样。我是否需要重建和分发所有这些以确保安全?他们有一套标准的规则吗?

还想知道我是否应该静态链接一些东西以及规则是什么?例如仅使用“-static”会失败,因为它会寻找我在该系统上没有的静态 pthread(并且我假设其他系统提供的库)。理想情况下,我希望缩小包裹的尺寸。

最佳答案

But I am unclear on what else I need to do this fully and ensure everything is correct/safe. e.g. I noticed libc, libm, libpthread, etc. are not part of the GCC build, and it still uses the system version, as with many other third party libraries (e.g. zlib, libpng, etc.). Do I need to rebuild and distribute all those to be safe? Is their a standard set of rules to tell?

在您的可执行文件和共享库上运行 ldd 以确保它从正确的位置加载 libstdc++libgcc_s,如果您链​​接它们动态地。这些是运行使用 g++ 构建的应用程序通常所需的仅有的两个依赖项。

通常,您不需要提供您自己的带有 C 接口(interface)的库版本,除非您的应用程序需要具有不兼容 API 的更新版本。

关于c++ - 使用比平台提供的更新版本的 GCC 需要什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32564406/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com