【发布时间】:2019-07-23 08:34:50
【问题描述】:
这是一个老问题,但我仍然找不到解决方案。
我有图书馆:
/usr/lib/x86_64-linux-gnu/libqca.so.2(它是由软件包 libqca2 安装的,并且 packager 没有提供 libqca.so 链接,我也不想这样做,因为我正在寻找所有类似情况的答案,而不是仅用于 qca 示例)
那么我怎样才能包含它不提供 lib 完整路径名:
-
g++ -L/usr/lib/x86_64-linux-gnu -lqca将无法工作,因为 .2 扩展名 -
g++ -L/usr/lib/x86_64-linux-gnu -lqca.so.2不允许 -
g++ -L/usr/lib/x86_64-linux-gnu qca.so.2也不工作。
看起来很简单的问题,答案是什么。
如果有 gcc/g++ 知识的人可以 100% 说出来并描述一些关于它的内容,那么“NO IT CAN NOT”可能是正确的答案......但 gcc 有这两种信息并不奇怪(寻找的路径, 和正确的库名称)并且不能只是将它组合起来(就像使用 -l 参数对具有标准命名的库所做的那样)。
【问题讨论】:
-
您已经尝试过,例如
g++ /usr/lib/x86_64-linux-gnu/libqca.so.2?如果它有效,你为什么不想使用它? -
@Someprogrammerdude 因为我希望我的 Makefile 可以在任何地方工作(第一个 -L 部分我已经从 qt 构建链中获得)并且在某个地方它将是 /usr/lib64 ... 或者我有 10 个库可以包括为什么不只有一个 -L... 所以有 100 个原因。
-
真的不可能制作一个简单的
Makefile来在任何地方工作。我建议您找到一些独立于平台的配置系统(例如 CMake)来为每个主机生成 makefile。 -
这不是一个“随机”的建议。这是一个建议,可以帮助您继续进行便携式项目,而不必担心这些细节。尤其是因为使用普通 makefile 解决它的唯一方法是拥有很多,至少为每个目标平台提供一个(通过“平台”,我还包括不同的 Linux 发行版,甚至同一发行版的不同版本)。
标签: gcc linker g++ shared-libraries