簡體   English   中英

docker build error / usr / bin / ld:找不到-lstdc ++ fedora29

[英]docker build error /usr/bin/ld: cannot find -lstdc++ fedora29

我正在嘗試使用以下Dockerfile構建一個Docker容器:

FROM fedora:29

RUN dnf -y update && dnf install -y file gcc gcc-c++ git make wget which libtool python3-pip redhat-rpm-config python3-devel zlib-devel libstdc++ openmpi-devel

RUN cd /tmp && \
wget http://www.mpich.org/static/downloads/3.3/mpich-3.3.tar.gz && \
gzip -dc mpich-3.3.tar.gz | tar xf - && \
cd mpich-3.3 && \
./configure --disable-fortran --prefix=/usr/mpich-3.3 && \
make && \
make install

ENV PATH            /usr/mpich-3.3/bin:${PATH}
ENV LD_LIBRARY_PATH /usr/mpich-3.3/lib:${LD_LIBRARY_PATH}

RUN cd /usr && git clone https://github.com/Dowell-Lab/FStitch
RUN              cd /usr/FStitch/src && make clean && make
RUN pip3 install FStitch-Bidir --user
ENV PATH            /usr/FStitch/src:${PATH}
ENV PATH            /root/.local/bin:${PATH}

RUN cd /usr && git clone https://github.com/Dowell-Lab/Tfit
RUN              cd /usr/Tfit/src && make clean && make 
ENV PATH            /usr/Tfit/src:${PATH}

CMD /bin/bash

我要克隆的項目是用c ++ 11編寫的,兩個項目中的第二個(Tfit)需要openmpi / mpich。 第一個程序可以成功編譯,但是第二個程序在編譯器的最后一步中出現以下錯誤:

/usr/bin/ld: cannot find -lstdc++
collect2: error: ld returned 1 exit status
make: *** [Makefile:20: NU_FIT] Error 1

我搜索並找到了以下兩個鏈接:

cpp:usr / bin / ld:找不到-l <nameOfTheLibrary>

usr / bin / ld:找不到-l <nameOfTheLibrary>

但是這些都不能解決問題,因為我想我只是缺少對庫的依賴/符號鏈接,但是我不確定如何在構建中實現這一點。 我可以在本地成功編譯,但是我必須對模塊加載mpi / openmpi-x86_64才能這樣做。 我的猜測是設置LD_LIBRARY_PATH時這是一個openmpi問題,但是不確定如何在Docker構建中解決此問題。

Makefile的前幾行如下:

CXX             = mpic++
CXXFLAGS        = -static-libstdc++ -static-libgcc  -Wno-unused-variable -Wno-non-virtual-dtor -std=c++11 -fopenmp -Wno-write-strings -Wno-literal-suffix -D_GLIBCXX_USE_CXX11_ABI=0 -g
EXEC            = ${PWD}/Tfit
ARCH                     = getconf LONG_BIT

CPP_FLAGS_32    = -D32_BIT
CPP_FLAGS_64    = -D64_BIT

GCCVERSION      = $(shell ${CXX} -dumpversion)
NU_FIT: main.o load.o split.o model.o across_segments.o template_matching.o \
    read_in_parameters.o model_selection.o error_stdo_logging.o \
    MPI_comm.o  density_profiler.o bootstrap.o prelim_main.o model_main.o select_main.o FDR.o BIC.o ParamWrapper.o old_template_matching.o
    @printf "linking               : "
    @${CXX} ${CXXFLAGS}  ${PWD}/main.o ${PWD}/load.o ${PWD}/model_selection.o \
    ${PWD}/split.o ${PWD}/model.o ${PWD}/across_segments.o  \
    ${PWD}/template_matching.o ${PWD}/read_in_parameters.o  \
    ${PWD}/MPI_comm.o   \
    ${PWD}/bootstrap.o ${PWD}/density_profiler.o \
    ${PWD}/prelim_main.o ${PWD}/model_main.o ${PWD}/BIC.o ${PWD}/FDR.o  \
    ${PWD}/select_main.o  ${PWD}/error_stdo_logging.o ${PWD}/ParamWrapper.o ${PWD}/old_template_matching.o -o ${EXEC} -lmpi
    @cp ${PWD}/Tfit ${PWD}/EMGU

任何幫助表示贊賞!

嘗試在dnf install列表中添加libstdc++-static https://github.com/numenta/nupic/issues/1901

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM