You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Conan将项目生成的libtask-manager.so安装到系统标准库目录?

解决方案

一、本地构建后将库安装到系统目录

要让libtask-manager.so安装到/lib/x86_64-linux-gnu,需先在子项目的CMake配置中添加安装规则,再执行安装命令:

  1. 修改子项目CMakeLists.txt
    打开business/task-manager/CMakeLists.txt,添加以下安装规则:

    # 安装libtask-manager.so到系统库目录
    install(TARGETS task-manager
            LIBRARY DESTINATION /lib/x86_64-linux-gnu
            COMPONENT runtime)
    
  2. 执行构建与安装
    完成构建后,通过CMake的install目标完成安装(需root权限):

    # 先执行构建
    cmake --build . --preset conan-release
    # 执行安装,sudo是因为写入系统目录需要权限
    sudo cmake --build . --preset conan-release --target install
    

二、Docker多阶段构建适配

针对Docker镜像中缺失库的问题,可在构建阶段完成库的安装,再复制到运行镜像中:

# 第一阶段:构建项目与安装库
FROM gcc:12 AS builder
WORKDIR /app

# 复制项目源码
COPY . .

# 安装Conan并配置依赖
RUN pip install conan
RUN conan install . --preset conan-release --build=missing

# 构建项目
RUN cmake --build . --preset conan-release

# 将库安装到构建容器的系统目录
RUN cmake --install . --preset conan-release --component runtime

# 第二阶段:运行镜像
FROM debian:bookworm-slim

# 复制可执行文件
COPY --from=builder /app/build/conan-release/CPPTemplate /usr/local/bin/

# 复制已安装的库到运行镜像的系统目录
COPY --from=builder /lib/x86_64-linux-gnu/libtask-manager.so /lib/x86_64-linux-gnu/

# 启动应用
CMD ["/usr/local/bin/CPPTemplate"]

补充说明

  • 如果不想安装到系统目录,也可以在构建后将libtask-manager.so复制到可执行文件同目录,运行时通过LD_LIBRARY_PATH指定,但安装到系统目录是最通用的解决方式。
  • Docker构建阶段中无需sudo,因为容器默认以root用户运行。

内容的提问来源于stack exchange,提问作者Marc Le Bihan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 18:22:11