上一篇借助qemu虚拟机实现了armhf和arm64架构的原生平台的程序编译。虽然它稳定好用,但有一个致命的缺点,特别慢。
同样的代码编译x86_64平台windows和linux的程序只需不到1分钟,而借助虚拟机编译armhf和arm64平台linux的程序要十多分钟。
于是我花了两天时间摸索交叉编译的方法,最终实现了对armhf和arm64架构的linux程序、amd64架构的windows程序、以及mac amd64和mac arm64架构的程序在amd64架构的linux下的交叉编译,算是实现了当前全部主流平台下调用gocv库的程序的交叉编译。
为了方便使用,我还是通过docker镜像来管理编译环境。
交叉编译最困难的地方在于相关的资料太少了,需要自己一点一点尝试。下面我展示一下这几个环境交叉编译的Dockerfile,大家沿着相应的思路就能实现其他程序的交叉编译了。
mac版的交叉编译借助了fyne的交叉编译镜像,fyne是go的一个跨平台gui库,用起来不是很方便,只能做玩具,想用到实际工作中太困难了,有很多坑。
但是它提供的交叉编译工具fyne-cross特别好用,尤其是它填了linux下针对mac进行交叉编译时的各种坑。不过由于由于苹果的版权限制,所以mac的交叉编译镜像不能公开提供,大家只能自己下载xcode然后从中提取交叉编译需要用到的工具,具体的步骤是:
- 去苹果官网下 Command_Line_Tools_for_Xcode_13.4.dmg(只要版本大于12.4就行,我下的是13.4)
- 安装fyne-cross
- 运行
fyne-cross darwin-image --xcode-path /path/to/Command_Line_Tools_for_Xcode_13.4.dmg
- 等一会就会生成
fyneio/fyne-cross:1.3-darwin
的mac交叉编译镜像。Enjoy!
大家感兴趣的话可以去fyne的网站瞧一瞧:
https://github.com/fyne-io/fyne-cross
交叉编译最关键的地方就是配置编译器和编译器标志了,对于opencv来说在配置cmake的时候指定CMAKE_TOOLCHAIN_FILE
可以很轻松地实现对armhf和arm64的交叉编译,如果是要编译windows的话需要手动设置CMAKE_C_COMPILER
、 CMAKE_CXX_COMPILER
、CMAKE_SYSTEM_NAME
、CMAKE_SYSTEM_PROCESSOR
这几个cmake变量,具体细节可以看下面的dockerfile.
windows amd64:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
| FROM ubuntu
LABEL maintainer="Jiangda He. mail: hejiangda@gmail.com"
ENV OPENCV_VERSION=4.5.5
ENV BUILD="unzip \ wget \ build-essential \ cmake \ curl \ git \ mingw-w64 \ mingw-w64-common \ mingw-w64-i686-dev \ mingw-w64-tools \ mingw-w64-x86-64-dev \ ca-certificates \ pkg-config"
ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone RUN apt-get update && apt-get install -y --no-install-recommends ${BUILD}
RUN mkdir /tmp/opencv && \ cd /tmp/opencv && \ wget -O opencv.zip https://github.com/opencv/opencv/archive/${OPENCV_VERSION}.zip && \ unzip opencv.zip && \ wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/${OPENCV_VERSION}.zip && \ unzip opencv_contrib.zip && \ mkdir /tmp/opencv/opencv-${OPENCV_VERSION}/build && \ rm opencv.zip opencv_contrib.zip && \ cd /tmp/opencv/opencv-${OPENCV_VERSION}/build && \ cmake \ -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D OPENCV_EXTRA_MODULES_PATH=/tmp/opencv/opencv_contrib-${OPENCV_VERSION}/modules \ -D WITH_FFMPEG=OFF \ -D WITH_GTK=OFF \ -D WITH_1394=OFF \ -D WITH_TIFF=OFF \ -D BUILD_opencv_world=ON \ -D INSTALL_C_EXAMPLES=NO \ -D INSTALL_PYTHON_EXAMPLES=NO \ -D BUILD_ANDROID_EXAMPLES=NO \ -D BUILD_DOCS=NO \ -D BUILD_TESTS=NO \ -D BUILD_PERF_TESTS=NO \ -D BUILD_EXAMPLES=NO \ -D BUILD_opencv_java=NO \ -D BUILD_opencv_python=NO \ -D BUILD_opencv_python2=NO \ -D BUILD_opencv_python3=NO \ -D WITH_TBB=OFF \ -D WITH_IPP=OFF \ -D BUILD_SHARED_LIBS=NO \ -D OPENCV_GENERATE_PKGCONFIG=YES \ -D CMAKE_C_COMPILER=x86_64-w64-mingw32-gcc-posix \ -D CMAKE_CXX_COMPILER=x86_64-w64-mingw32-g++-posix \ -D CMAKE_SYSTEM_NAME=Windows \ -D CMAKE_SYSTEM_PROCESSOR=AMD64 \ -D CMAKE_CXX_STANDARD=11 \ .. && \ cd /tmp/opencv/opencv-${OPENCV_VERSION}/build && make -j12 && \ make install -j12 && \ rm -rf /tmp/opencv/
RUN wget https://go.dev/dl/go1.18.linux-amd64.tar.gz && rm -rf /usr/local/go && tar -C /usr/local -xzf go1.18.linux-amd64.tar.gz && rm -rf go1.18.linux-amd64.tar.gz ENV PATH=$PATH:/usr/local/go/bin ENV CGO_CPPFLAGS="-I/usr/local/include/opencv4" ENV CGO_LDFLAGS="--static -L/usr/local/lib -L/usr/local/lib/opencv4/3rdparty -lopencv_img_hash455 -lopencv_world455 -lIlmImf -llibjpeg-turbo -llibpng -llibwebp -lzlib -lade -llibopenjp2 -llibprotobuf -lquirc -lpthread -lm -lkernel32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 -luser32" ENV CGO_ENABLED=1 ENV GOOS=windows ENV GOARCH=amd64 ENV CC=x86_64-w64-mingw32-gcc-posix ENV CXX=x86_64-w64-mingw32-g++-posix
WORKDIR /root/
|
armhf:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
| FROM ubuntu
LABEL maintainer="Jiangda He. mail: hejiangda@gmail.com"
ENV OPENCV_VERSION=4.5.5
ENV BUILD="unzip \ wget \ crossbuild-essential-armhf \ cmake \ curl \ git \ ca-certificates \ pkg-config"
ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone RUN apt-get update && apt-get install -y --no-install-recommends ${BUILD}
RUN mkdir /tmp/opencv && \ cd /tmp/opencv && \ wget -O opencv.zip https://github.com/opencv/opencv/archive/${OPENCV_VERSION}.zip && \ unzip opencv.zip && \ wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/${OPENCV_VERSION}.zip && \ unzip opencv_contrib.zip && \ mkdir /tmp/opencv/opencv-${OPENCV_VERSION}/build && \ rm opencv.zip opencv_contrib.zip && \ cd /tmp/opencv/opencv-${OPENCV_VERSION}/build && \ cmake \ -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D OPENCV_EXTRA_MODULES_PATH=/tmp/opencv/opencv_contrib-${OPENCV_VERSION}/modules \ -D WITH_FFMPEG=OFF \ -D WITH_GTK=OFF \ -D WITH_1394=OFF \ -D WITH_TIFF=OFF \ -D BUILD_opencv_world=ON \ -D INSTALL_C_EXAMPLES=NO \ -D INSTALL_PYTHON_EXAMPLES=NO \ -D BUILD_ANDROID_EXAMPLES=NO \ -D BUILD_DOCS=NO \ -D BUILD_TESTS=NO \ -D BUILD_PERF_TESTS=NO \ -D BUILD_EXAMPLES=NO \ -D BUILD_opencv_java=NO \ -D BUILD_opencv_python=NO \ -D BUILD_opencv_python2=NO \ -D BUILD_opencv_python3=NO \ -D WITH_TBB=ON \ -D BUILD_TBB=ON \ -D BUILD_SHARED_LIBS=NO \ -D OPENCV_GENERATE_PKGCONFIG=YES \ -D CMAKE_TOOLCHAIN_FILE=/tmp/opencv/opencv-${OPENCV_VERSION}/platforms/linux/arm-gnueabi.toolchain.cmake .. && \ cd /tmp/opencv/opencv-${OPENCV_VERSION}/build && make -j12 && \ make install -j12 && \ rm -rf /tmp/opencv/
RUN wget https://go.dev/dl/go1.18.linux-amd64.tar.gz && rm -rf /usr/local/go && tar -C /usr/local -xzf go1.18.linux-amd64.tar.gz && rm -rf go1.18.linux-amd64.tar.gz ENV PATH=$PATH:/usr/local/go/bin ENV CGO_CPPFLAGS="-I/usr/local/include/opencv4" ENV CGO_LDFLAGS="--static -L/usr/local/lib -L/usr/local/lib/opencv4/3rdparty -lopencv_world -lopencv_img_hash -lade -llibopenjp2 -llibwebp -littnotify -llibpng -lquirc -lzlib -llibjpeg-turbo -llibprotobuf -ltbb -ldl -lpthread -lm" ENV CGO_ENABLED=1 ENV GOOS=linux ENV GOARCH=arm ENV CC=arm-linux-gnueabihf-gcc ENV CXX=arm-linux-gnueabihf-g++ WORKDIR /root/
|
arm64:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
| FROM ubuntu
LABEL maintainer="Jiangda He. mail: hejiangda@gmail.com"
ENV OPENCV_VERSION=4.5.5
ENV BUILD="unzip \ wget \ crossbuild-essential-arm64 \ cmake \ curl \ git \ ca-certificates \ pkg-config"
ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone RUN apt-get update && apt-get install -y --no-install-recommends ${BUILD}
RUN mkdir /tmp/opencv && \ cd /tmp/opencv && \ wget -O opencv.zip https://github.com/opencv/opencv/archive/${OPENCV_VERSION}.zip && \ unzip opencv.zip && \ wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/${OPENCV_VERSION}.zip && \ unzip opencv_contrib.zip && \ mkdir /tmp/opencv/opencv-${OPENCV_VERSION}/build && \ rm opencv.zip opencv_contrib.zip && \ cd /tmp/opencv/opencv-${OPENCV_VERSION}/build && \ cmake \ -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D OPENCV_EXTRA_MODULES_PATH=/tmp/opencv/opencv_contrib-${OPENCV_VERSION}/modules \ -D WITH_FFMPEG=OFF \ -D WITH_GTK=OFF \ -D WITH_1394=OFF \ -D WITH_TIFF=OFF \ -D BUILD_opencv_world=ON \ -D INSTALL_C_EXAMPLES=NO \ -D INSTALL_PYTHON_EXAMPLES=NO \ -D BUILD_ANDROID_EXAMPLES=NO \ -D BUILD_DOCS=NO \ -D BUILD_TESTS=NO \ -D BUILD_PERF_TESTS=NO \ -D BUILD_EXAMPLES=NO \ -D BUILD_opencv_java=NO \ -D BUILD_opencv_python=NO \ -D BUILD_opencv_python2=NO \ -D BUILD_opencv_python3=NO \ -D WITH_TBB=ON \ -D BUILD_TBB=ON \ -D BUILD_SHARED_LIBS=NO \ -D OPENCV_GENERATE_PKGCONFIG=YES \ -D CMAKE_TOOLCHAIN_FILE=/tmp/opencv/opencv-${OPENCV_VERSION}/platforms/linux/aarch64-gnu.toolchain.cmake .. && \ cd /tmp/opencv/opencv-${OPENCV_VERSION}/build && make -j12 && \ make install -j12 && \ rm -rf /tmp/opencv/
RUN wget https://go.dev/dl/go1.18.linux-amd64.tar.gz && rm -rf /usr/local/go && tar -C /usr/local -xzf go1.18.linux-amd64.tar.gz && rm -rf go1.18.linux-amd64.tar.gz ENV PATH=$PATH:/usr/local/go/bin ENV CGO_CPPFLAGS="-I/usr/local/include/opencv4" ENV CGO_LDFLAGS="--static -L/usr/local/lib -L/usr/local/lib/opencv4/3rdparty -lopencv_world -lopencv_img_hash -lade -llibopenjp2 -llibwebp -ltegra_hal -littnotify -llibpng -lquirc -lzlib -llibjpeg-turbo -llibprotobuf -ltbb -ldl -lpthread -lm" ENV CGO_ENABLED=1 ENV GOOS=linux ENV GOARCH=arm64 ENV CC=aarch64-linux-gnu-gcc ENV CXX=aarch64-linux-gnu-g++ WORKDIR /root/
|
amd64:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
| FROM ubuntu
LABEL maintainer="Jiangda He. mail: hejiangda@gmail.com"
ENV OPENCV_VERSION=4.5.5
ENV BUILD="unzip \ wget \ build-essential \ cmake \ curl \ git \ libz-dev\ ca-certificates \ pkg-config"
ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone RUN apt-get update && apt-get install -y --no-install-recommends ${BUILD}
RUN mkdir /tmp/opencv && \ cd /tmp/opencv && \ wget -O opencv.zip https://github.com/opencv/opencv/archive/${OPENCV_VERSION}.zip && \ unzip opencv.zip && \ wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/${OPENCV_VERSION}.zip && \ unzip opencv_contrib.zip && \ mkdir /tmp/opencv/opencv-${OPENCV_VERSION}/build && \ rm opencv.zip opencv_contrib.zip && \ cd /tmp/opencv/opencv-${OPENCV_VERSION}/build && \ cmake \ -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D OPENCV_EXTRA_MODULES_PATH=/tmp/opencv/opencv_contrib-${OPENCV_VERSION}/modules \ -D WITH_FFMPEG=OFF \ -D WITH_GTK=OFF \ -D WITH_1394=OFF \ -D WITH_TIFF=OFF \ -D BUILD_opencv_world=ON \ -D INSTALL_C_EXAMPLES=NO \ -D INSTALL_PYTHON_EXAMPLES=NO \ -D BUILD_ANDROID_EXAMPLES=NO \ -D BUILD_DOCS=NO \ -D BUILD_TESTS=NO \ -D BUILD_PERF_TESTS=NO \ -D BUILD_EXAMPLES=NO \ -D BUILD_opencv_java=NO \ -D BUILD_opencv_python=NO \ -D BUILD_opencv_python2=NO \ -D BUILD_opencv_python3=NO \ -D WITH_TBB=ON \ -D BUILD_TBB=ON \ -D WITH_IPP=OFF \ -D BUILD_SHARED_LIBS=NO \ -D OPENCV_GENERATE_PKGCONFIG=YES \ .. && \ cd /tmp/opencv/opencv-${OPENCV_VERSION}/build && make -j12 && \ make install -j12 && \ rm -rf /tmp/opencv/
RUN wget https://go.dev/dl/go1.18.linux-amd64.tar.gz && rm -rf /usr/local/go && tar -C /usr/local -xzf go1.18.linux-amd64.tar.gz && rm -rf go1.18.linux-amd64.tar.gz ENV PATH=$PATH:/usr/local/go/bin ENV CGO_CPPFLAGS="-I/usr/local/include/opencv4" ENV CGO_LDFLAGS="--static -L/usr/local/lib -L/usr/local/lib/opencv4/3rdparty -lopencv_world -lopencv_img_hash -lade -llibopenjp2 -llibwebp -littnotify -llibpng -lquirc -llibjpeg-turbo -llibprotobuf -ltbb -lIlmImf -ldl -lpthread -lm -lz" WORKDIR /root/
|
mac版的交叉编译需要在之前用fyne-cross生成的镜像的基础上进行处理,这里我的镜像是fyne-cross:1.3-darwin
mac amd64:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
| FROM fyne-cross:1.3-darwin
LABEL maintainer="Jiangda He. mail: hejiangda@gmail.com"
ENV OPENCV_VERSION=4.5.5
ENV BUILD="unzip \ wget \ build-essential \ cmake \ curl \ git \ libz-dev\ ca-certificates \ pkg-config"
ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone RUN apt-get update && apt-get install -y --no-install-recommends ${BUILD}
RUN mkdir /tmp/opencv && \ cd /tmp/opencv && \ wget -O opencv.zip https://github.com/opencv/opencv/archive/${OPENCV_VERSION}.zip && \ unzip opencv.zip && \ wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/${OPENCV_VERSION}.zip && \ unzip opencv_contrib.zip && \ mkdir /tmp/opencv/opencv-${OPENCV_VERSION}/build && \ rm opencv.zip opencv_contrib.zip && \ cd /tmp/opencv/opencv-${OPENCV_VERSION}/build && \ cmake \ -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D OPENCV_EXTRA_MODULES_PATH=/tmp/opencv/opencv_contrib-${OPENCV_VERSION}/modules \ -D WITH_FFMPEG=OFF \ -D WITH_GTK=OFF \ -D WITH_1394=OFF \ -D WITH_TIFF=OFF \ -D BUILD_opencv_world=ON \ -D INSTALL_C_EXAMPLES=NO \ -D INSTALL_PYTHON_EXAMPLES=NO \ -D BUILD_ANDROID_EXAMPLES=NO \ -D BUILD_DOCS=NO \ -D BUILD_TESTS=NO \ -D BUILD_PERF_TESTS=NO \ -D BUILD_EXAMPLES=NO \ -D BUILD_opencv_java=NO \ -D BUILD_opencv_python=NO \ -D BUILD_opencv_python2=NO \ -D BUILD_opencv_python3=NO \ -D WITH_AVFOUNDATION=OFF \ -D WITH_TBB=OFF \ -D WITH_IPP=OFF \ -D BUILD_SHARED_LIBS=NO \ -D OPENCV_GENERATE_PKGCONFIG=YES \ -D CMAKE_C_COMPILER=o64-clang \ -D CMAKE_CXX_COMPILER=o64-clang++ \ -D CMAKE_SYSTEM_NAME=Darwin \ -D CMAKE_INSTALL_NAME_TOOL=x86_64-apple-darwin20.4-install_name_tool \ -D CMAKE_LINKER=x86_64-apple-darwin20.4-ld \ -D CMAKE_SYSTEM_PROCESSOR=AMD64 \ -D CMAKE_AR=/osxcross/target/bin/x86_64-apple-darwin20.4-ar \ -D CMAKE_OSX_SYSROOT=/osxcross/target/SDK/MacOSX11.3.sdk/ \ -D CMAKE_CXX_STANDARD=11 \ -D CMAKE_OSX_ARCHITECTURES="x86_64" \ .. && \ cd /tmp/opencv/opencv-${OPENCV_VERSION}/build && make -j12 && \ make install -j12 && \ rm -rf /tmp/opencv/
WORKDIR /root
ENV CGO_ENABLED=1 ENV GOOS=darwin ENV GOARCH=amd64 ENV CC=o64-clang ENV CXX=o64-clang++ ENV OSXCROSS_NO_INCLUDE_PATH_WARNINGS=1 ENV CGO_CPPFLAGS="-I/usr/local/include/opencv4" ENV CGO_LDFLAGS="-L/usr/local/lib -L/usr/local/lib/opencv4/3rdparty -L/osxcross/target/SDK/MacOSX11.3.sdk/System/Library/Frameworks -lopencv_world -llibprotobuf -llibjpeg-turbo -llibwebp -llibpng -llibopenjp2 -lIlmImf -lzlib -lquirc -lade -littnotify -ldl -framework Accelerate -framework AppKit -framework Cocoa -framework OpenCL -framework Accelerate -framework AppKit -framework Cocoa -framework OpenCL"
|
mac版的交叉编译需要在之前用fyne-cross生成的镜像的基础上进行处理,这里我的镜像是fyne-cross:1.3-darwin
mac arm64:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
| FROM fyne-cross:1.3-darwin
LABEL maintainer="Jiangda He. mail: hejiangda@gmail.com"
ENV OPENCV_VERSION=4.5.5
ENV BUILD="unzip \ wget \ build-essential \ cmake \ curl \ git \ libz-dev\ ca-certificates \ pkg-config"
ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone RUN apt-get update && apt-get install -y --no-install-recommends ${BUILD}
RUN mkdir /tmp/opencv && \ cd /tmp/opencv && \ wget -O opencv.zip https://github.com/opencv/opencv/archive/${OPENCV_VERSION}.zip && \ unzip opencv.zip && \ wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/${OPENCV_VERSION}.zip && \ unzip opencv_contrib.zip && \ mkdir /tmp/opencv/opencv-${OPENCV_VERSION}/build && \ rm opencv.zip opencv_contrib.zip && \ cd /tmp/opencv/opencv-${OPENCV_VERSION}/build && \ cmake \ -D CMAKE_BUILD_TYPE=RELEASE \ -D CMAKE_INSTALL_PREFIX=/usr/local \ -D OPENCV_EXTRA_MODULES_PATH=/tmp/opencv/opencv_contrib-${OPENCV_VERSION}/modules \ -D WITH_FFMPEG=OFF \ -D WITH_GTK=OFF \ -D WITH_1394=OFF \ -D WITH_TIFF=OFF \ -D BUILD_opencv_world=ON \ -D INSTALL_C_EXAMPLES=NO \ -D INSTALL_PYTHON_EXAMPLES=NO \ -D BUILD_ANDROID_EXAMPLES=NO \ -D BUILD_DOCS=NO \ -D BUILD_TESTS=NO \ -D BUILD_PERF_TESTS=NO \ -D BUILD_EXAMPLES=NO \ -D BUILD_opencv_java=NO \ -D BUILD_opencv_python=NO \ -D BUILD_opencv_python2=NO \ -D BUILD_opencv_python3=NO \ -D WITH_TBB=OFF \ -D WITH_IPP=OFF \ -D BUILD_SHARED_LIBS=NO \ -D OPENCV_GENERATE_PKGCONFIG=YES \ -D CMAKE_C_COMPILER=oa64-clang \ -D CMAKE_CXX_COMPILER=oa64-clang++ \ -D CMAKE_SYSTEM_NAME=Darwin \ -D CMAKE_INSTALL_NAME_TOOL=arm64-apple-darwin20.4-install_name_tool \ -D CMAKE_LINKER=arm64-apple-darwin20.4-ld \ -D CMAKE_SYSTEM_PROCESSOR=ARM64 \ -D CMAKE_AR=/osxcross/target/bin/arm64-apple-darwin20.4-ar \ -D CMAKE_CXX_STANDARD=11 \ .. && \ cd /tmp/opencv/opencv-${OPENCV_VERSION}/build && make -j12 && \ make install -j12 && \ rm -rf /tmp/opencv/
ENV CGO_CPPFLAGS="-I/usr/local/include/opencv4" ENV CGO_LDFLAGS="-L/usr/local/lib -L/usr/local/lib/opencv4/3rdparty -lopencv_world -llibprotobuf -llibjpeg-turbo -llibwebp -llibpng -llibopenjp2 -lIlmImf -lzlib -lquirc -lade -littnotify -ltegra_hal -ldl -framework AVFoundation -framework CoreGraphics -framework CoreMedia -framework CoreVideo -framework QuartzCore -framework AppKit -framework Cocoa -framework OpenCL -framework Accelerate" ENV CGO_ENABLED=1 ENV GOOS=darwin ENV GOARCH=arm64 ENV CC=oa64-clang ENV CXX=oa64-clang++ ENV OSXCROSS_NO_INCLUDE_PATH_WARNINGS=1
WORKDIR /root
|
