我有一个使用 Windows 开发的项目。它使用了我的一些库(有时使用另一个库)并且在 Win 中它工作得很好。
现在我尝试在 Astra Linux 中运行它,但遇到了一个奇怪的问题。
文件依赖关系看起来像(示例):
我有这些库:
core.so
、my.so
和manager.so
— manager
使用core.so
和my.so
,我可以毫无问题地构建它。
然后我有一个使用
manager.so
的主应用程序,并且我收到此警告:
libmy.so.1 needed by ***output_path***/libmanager.so, not found (try using -rpath)
和一个错误:
undefined reference to my::my()
所有文件都存在(检查了 100 次并且已经尝试将所有 lib 放在所有可能的文件夹中)!主要奇怪的是,我对
core.so
没有遇到与 manager.so
以相同方式使用的相同问题,并且它位于相同的文件夹中。
也许 Linux 上使用库链有任何细微差别?我提醒一下,在 Windows 上,它运行得很好。
我尝试配置所有路径,但同样的问题。
问题是我也必须在主应用程序中添加一个 lib 路径(即使我不使用其中的任何类)。我在Windows上再次检查了它,它在应用程序中没有路径的情况下也可以工作(在模块中添加路径就足够了)。所以,这意味着如果我更改了任何模块,我必须再次重建所有模块和应用程序。