有趣的水肿。
尝试编译Qt程序,其中Qt是从源代码上在64位18.04上构建的,并在14.04上运行。有趣的部分是尝试确定这次我需要哪些库。 C ++ ABI已更改。
要查看最近是否有人这样做?我必须携带哪些图书馆?是的,我了解ldd和readelf,并花了几天的时间在各种VM中进行尝试。问题是,一旦您开始使用C ++内容(因为ABI再次更改),您将陷入无法重启VM的地步。
请不要建议使用活泼的,flatpak或其他新的“容器”解决方案之一。已经浪费了超过3天的时间。它是特定于体系结构的,并且仅在涉及Qt时才支持在14.04上进行构建,至少是使AppImage可以使用的deployqt工具。
几年前使用此程序进行了此操作。构建了一个Debian,它将为12.04至15.04的每个版本(包括短期的.10和奇数年版本)安装在64位和32位上。
我尝试使用C ++ 11标准编译QT,但是它将不再使用该标准编译。
不兼容的ABI是真正的杀手。
这是一个以上的程序,因此使用LD_LIBRARY_PATH破解shell脚本会带来很大的困难。
欣赏真知灼见。
谢谢。
答案 0 :(得分:0)
请始终在仍要运行应用程序的最旧发行版上开发应用程序。例如,如果您希望您的应用程序在当前仍受支持的所有版本的Ubuntu上运行,请在Ubuntu 14.04上开发您的应用程序,并且不要安装任何比其随附的更新的编译器或库。
这是“向后兼容性”的工作方式。