我正在尝试使用 docker 和 qemu 在我的 x86 主机上构建arm镜像
我使用arm64v8/ubuntu作为基础镜像
我制作了一个简单的 opencv 程序并尝试使用 ldd 命令来查看依赖关系。
然而,ldd总是显示:
ldd:退出,退出代码未知 (132)
如果我保存此图像并将其加载到 Arm 计算机中,ldd 就会起作用。
但是,我的主项目太大(或者我的arm计算机空间太小),无法导入到arm计算机,我想使用ldd来找出该项目真正需要哪些库。
我还尝试 nvcr.io/nvidia/l4t-base:r32.4.4 作为基础图像和 ldd 显示
ldd:退出,退出代码未知 (139)
如果我在 docker 中的 arm 镜像中并且我的主机是 x86,我应该怎么做才能使用 ldd 命令?
我的 dockerfile 是这样的:
FROM arm64v8/ubuntu
ENV TZ=Asia/Taipei
RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone
RUN apt-get update && 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 && \
apt-get clean
WORKDIR /home/gino/
RUN git clone https://github.com/opencv/opencv.git && \
cd ./opencv && \
mkdir build && \
cd build && \
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 \
.. && \
make -j8 && \
make install && \
ldconfig && \
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
Run Code Online (Sandbox Code Playgroud)
主程序
#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;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1199 次 |
最近记录: |