三多学长 2017-11-01 01:25 采纳率: 0%
浏览 787

Ubuntu下cmake链接静态库

在Ubuntu下使用cmake编译工程,Cmakelists如图所示图片说明,cmake通过之后make,结果出现如下错误图片说明,貌似源文件引用的静态库中的文件都没有找到。请问有大神知道这是为什么以及如何解决吗?

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-07 03:04
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    这个问题是由于静态库没有正确加载导致的。要解决这个问题,你需要确保所有的静态库都在你的项目的路径范围内,并且它们被正确地包含在你的项目中。

    如果你正在使用的是CMake的默认设置,那么你应该能够看到所有所需的静态库在项目的路径范围内。然而,如果这不是你的情况,那么你可以尝试以下步骤来解决问题:

    1. 确保你的静态库位于项目的路径范围内。
    2. 如果你的静态库是共享库,那么你需要将它们放在项目的目录中。这可以通过将它们添加到项目的构建脚本中来实现。

    例如,如果你有一个名为libosdk-core.so的共享库,你可以将其添加到你的CMakeLists.txt文件中,如下所示:

    find_library(OSDK_CORE_LIBRARY libosdk-core.so REQUIRED)
    

    然后,在你的目标文件中,你可以这样引用它:

    #include <iostream>
    #include "sdk/core/vehicle.h"
    using namespace std;
    
    int main()
    {
        vehicle_t * vehicle = new vehicle_t();
        vehicle->is_m100(); // This will fail if the library is not found
    }
    

    如果你的目标文件中没有这个变量,那么编译时会出错。

    评论

报告相同问题?