且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Linux:在Docker容器中找不到现有的共享库

更新时间:2023-11-18 16:33:28

最后的修改导致了问题,也导致了解决方案.

The last edit led to the issue and also to the solution.

CMake删除 RPATH .如果在Docker容器中使用,则这种剥离是没有意义的,可以按照此

CMake removes the RPATH. In case of the usage within a docker container, this stripping makes no sense and can be turned off as described in this post by adding this argument to the CMake configuration call:

-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=TRUE

最后,我的Dockerfile如下所示:

At the end my Dockerfile looks like this:

FROM fastrtps-core

WORKDIR /opt
RUN git clone https://github.com/eProsima/Fast-RTPS.git && \
    export LDFLAGS="-Wl,--copy-dt-needed-entries" && \
    mkdir build && \
    cd build && \
    cmake ../Fast-RTPS/examples \
        -DCMAKE_INSTALL_RPATH_USE_LINK_PATH=TRUE && \
    cmake --build . --target install -j 16 && \
    cd /opt && \
    rm -rf build Fast-RTPS

现在安装步骤输出将显示正确的运行时路径设置:

Now the install-step output shows the correct runtime-path setting:

-- Installing: /usr/local/examples/C++/HelloWorldExample/HelloWorldExample
-- Set runtime path of "/usr/local/examples/C++/HelloWorldExample/HelloWorldExample" to "/usr/local/lib"