ldd: выполняется с неизвестным кодом выхода при использовании qemu в docker

#docker #qemu #ldd

#docker #qemu #ldd

Вопрос:

Я пытаюсь использовать docker с qemu для создания образа arm на моем хост-компьютере x86

Я использую arm64v8 / ubuntu в качестве базового образа

Я создаю простую программу opencv и пытаюсь использовать команду ldd, чтобы увидеть зависимости.

однако ldd всегда показывает:

ldd: выход с неизвестным кодом выхода (132)

ldd будет работать, если я сохраню это изображение и загружу его на компьютер arm.

Однако размер моего основного проекта слишком велик (или пространство на моем arm-компьютере слишком мало) для импорта на arm-компьютер, я хотел бы использовать ldd, чтобы выяснить, какие библиотеки действительно необходимы для этого проекта.

Я также пытаюсь nvcr.io/nvidia/l4t-base:r32.4.4 как показано на изображении и ldd

ldd: выход с неизвестным кодом выхода (139)

что мне следует сделать, чтобы использовать команду ldd, если я нахожусь в образе arm в docker, а мой хост-компьютер x86?

мой файл dockerfile выглядит следующим образом:

 FROM arm64v8/ubuntu
ENV TZ=Asia/Taipei
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime amp;amp; echo $TZ > /etc/timezone

RUN apt-get update amp;amp; apt-get install -y   
    build-essential -y  
    cmake -y  
    git -y  
    libgtk2.0-dev -y  
    libjpeg-dev -y  
    libpng-dev -y  
    libtiff-dev -y  
    pkg-config -y amp;amp; 
    apt-get clean
WORKDIR /home/gino/
RUN git clone https://github.com/opencv/opencv.git amp;amp; 
    cd ./opencv amp;amp; 
    mkdir build amp;amp; 
    cd build amp;amp; 
    cmake  
        -D BUILD_SHARED_LIBS=ON  
        -D WITH_QT=OFF 
        -D WITH_OPENGL=OFF  
        -D FORCE_VTK=OFF 
        -D WITH_TBB=OFF  
        -D WITH_GDAL=OFF  
    -D WITH_V4L=ON 
        -D WITH_XINE=OFF  
        -D BUILD_EXAMPLES=OFF 
        -D ENABLE_PRECOMPILED_HEADERS=OFF 
        -D BUILD_DOCS=OFF 
        -D BUILD_PERF_TESTS=OFF 
        -D BUILD_TESTS=OFF 
        -D BUILD_opencv_apps=OFF 
    -D CMAKE_INSTALL_PREFIX=/home/gino/opencv_install 
        .. amp;amp; 
    make -j8 amp;amp; 
    make install amp;amp; 
    ldconfig amp;amp; 
    apt-get clean
WORKDIR /home/gino/
RUN rm -R ./opencv 
ADD ./ /home/gino/cvtest/
WORKDIR /home/gino/cvtest/

RUN make clean all

ENV HOME /home/developer
CMD /home/gino/cvtest/dockertest
 

main.cpp

 #include <iostream>
#include <opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main()
{
    Mat frame;
    VideoCapture video(-1);
    while(video.isOpened())
    {
        video>>frame;
        imshow("frame",frame);
        waitKey(1);
    }
    cout << "Hello World!" << endl;
    return 0;
}