#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;
}