无法让基于opencv的应用程序在早于我的Macbook上运行

时间:2018-03-14 23:36:32

标签: c++ macos opencv

我已经在Mac上编译了opencv,并基于它创建了一个MacOS应用程序。它目前适用于过去几个月的各种Mac。但是,我的Macbook是2013年末。目前,没有使用2013年早期Macbook或更早版本的用户可以运行它。

我已经尝试了几种不同的方法来在Mac上编译OpenCV,以使其在比我更早但尚未成功的计算机上运行。我的应用程序已在50多台Mac上运行了数月,但它们都是2013年末的Macbook或更新版本。我已经确认它可以在较旧的操作系统上运行。例如,我运行High Sierra 10.13,我看到我的应用程序在具有10.10.5和10.12系统的系统上运行。即使是2013年初Macbook也不会运行我的应用程序。我的目标是让应用程序在旧的Mac上运行,而不是我的2013年晚些时候的Macbook Pro。

我使用Xcode 9.2。我用brew来编译OpenCV。在这个例子中,我使用的是opencv 3.4.0。我也尝试过3.4.1,它也没用。我确定我错过了一些简单的设置。

我目前使用此设置进行编译,但这还不够:

-DCMAKE_OSX_DEPLOYMENT_TARGET=10.9

我尝试使用此标志进行编译,但它没有帮助。我认为这个标志会告诉编译器针对较旧的架构,但它不起作用:

-DCMAKE_CXX_COMPILER_TARGET=x86_64-apple-darwin15.5.0

2010年Macbook的崩溃日志如下所示:

Process:               Brightday [17622]
Path:                  /Users/USER/Downloads/Brightday.app/Contents/MacOS/Brightday
Identifier:            com.brightday.Brightday
Version:               47 (47)
Code Type:             X86-64 (Native)
Parent Process:        ??? [1]
Responsible:           Brightday [17622]
User ID:               502

Date/Time:             2018-01-22 17:46:07.436 -0800
OS Version:            Mac OS X 10.11.5 (15F34)
Report Version:        11
Anonymous UUID:        333100CF-2D55-443A-78BE-49F842AC3DD4

Sleep/Wake UUID:       B8FBAF9B-42C4-450F-905D-74EAE4B19AD9

Time Awake Since Boot: 600000 seconds
Time Since Wake:       5100 seconds

System Integrity Protection: enabled

Crashed Thread:        0  Dispatch queue: com.apple.main-thread

Exception Type:        EXC_BAD_INSTRUCTION (SIGILL)
Exception Codes:       0x0000000000000001, 0x0000000000000000
Exception Note:        EXC_CORPSE_NOTIFY

Application Specific Information:
/Users/USER/Downloads/Brightday.app/Contents/MacOS/../Frameworks/../Frameworks/opencv/libopencv_core.3.4.0.dylib

Thread 0 Crashed:: Dispatch queue: com.apple.main-thread
0   libopencv_core.3.4.0.dylib      0x000000010f8e7556 _GLOBAL__sub_I_persistence.cpp + 44
1   dyld                            0x00007fff6606510b ImageLoaderMachO::doModInitFunctions(ImageLoader::LinkContext const&) + 265
2   dyld                            0x00007fff66065284 ImageLoaderMachO::doInitialization(ImageLoader::LinkContext const&) + 40
3   dyld                            0x00007fff660618bd ImageLoader::recursiveInitialization(ImageLoader::LinkContext const&, unsigned int, ImageLoader::InitializerTimingList&, ImageLoader::UninitedUpwards&) + 305
4   dyld                            0x00007fff66061852 ImageLoader::recursiveInitialization(ImageLoader::LinkContext const&, unsigned int, ImageLoader::InitializerTimingList&, ImageLoader::UninitedUpwards&) + 198
5   dyld                            0x00007fff66061743 ImageLoader::processInitializers(ImageLoader::LinkContext const&, unsigned int, ImageLoader::InitializerTimingList&, ImageLoader::UninitedUpwards&) + 127
6   dyld                            0x00007fff660619b3 ImageLoader::runInitializers(ImageLoader::LinkContext const&, ImageLoader::InitializerTimingList&) + 75
7   dyld                            0x00007fff660540f1 dyld::initializeMainExecutable() + 208
8   dyld                            0x00007fff66057d98 dyld::_main(macho_header const*, unsigned long, int, char const**, char const**, char const**, unsigned long*) + 3596
9   dyld                            0x00007fff66053276 dyldbootstrap::start(macho_header const*, int, char const**, long, macho_header const*, unsigned long*) + 512
10  dyld                            0x00007fff66053036 _dyld_start + 54

Thread 0 crashed with X86 Thread State (64-bit):
  rax: 0x000000011003b6d1  rbx: 0x00007fff50563650  rcx: 0x00007fff50566d40  rdx: 0x00007fff50566ce0
  rdi: 0x0000000000000001  rsi: 0x00007fff50566cd0  rbp: 0x00007fff505636c0  rsp: 0x00007fff50563650
   r8: 0x00007fff6608b630   r9: 0x000000000000002c  r10: 0x00007fff50566d38  r11: 0x0000000000000000
  r12: 0x00000001102758e8  r13: 0x00007fff6608b568  r14: 0x00007fff66093b78  r15: 0x0000000000000001
  rip: 0x000000010f8e7556  rfl: 0x0000000000010246  cr2: 0x000000010f8e752a

Logical CPU:     2
Error Code:      0x00000000
Trap Number:     6


Binary Images:
       0x10f699000 -        0x10f71bfff +com.brightday.Brightday (47 - 47) <C4224EF0-C56D-3124-80DF-2394BAEF1392> /Users/USER/Downloads/Brightday.app/Contents/MacOS/Brightday
       0x10f75d000 -        0x110274fe7 +libopencv_core.3.4.0.dylib (0) <59A4B9B9-1E75-3314-AF6C-E6C6D6AB98A4> /Users/USER/Downloads/Brightday.app/Contents/Frameworks/opencv/libopencv_core.3.4.0.dylib
       0x1103ec000 -        0x11047bfef +libopencv_features2d.3.4.0.dylib (0) <4BC1D301-389F-34CE-BE2E-60F2EA549F2C> /Users/USER/Downloads/Brightday.app/Contents/Frameworks/opencv/libopencv_features2d.3.4.0.dylib
       0x1104ae000 -        0x1104e8ffb +libopencv_flann.3.4.0.dylib (0) <1052FC33-9DEA-3B9F-9C8E-6036FCE6DB9E> /Users/USER/Downloads/Brightday.app/Contents/Frameworks/opencv/libopencv_flann.3.4.0.dylib

来自此命令:

otool -l libopencv_core.3.4.1.dylib 

我得到了这个输出

libopencv_core.3.4.1.dylib:
Mach header
      magic cputype cpusubtype  caps    filetype ncmds sizeofcmds      flags
 0xfeedfacf 16777223          3  0x00           6    19       2184 0x00118085
Load command 0
      cmd LC_SEGMENT_64
  cmdsize 632
  segname __TEXT
   vmaddr 0x0000000000000000
   vmsize 0x000000000024a000
  fileoff 0
 filesize 2400256
  maxprot 0x00000007
 initprot 0x00000005
   nsects 7
    flags 0x0
Section
  sectname __text
   segname __TEXT
      addr 0x0000000000002610
      size 0x00000000001bf9c7
    offset 9744
     align 2^4 (16)
    reloff 0
    nreloc 0
     flags 0x80000400
 reserved1 0
 reserved2 0
Section
  sectname __stubs
   segname __TEXT
      addr 0x00000000001c1fd8
      size 0x000000000000052e
    offset 1843160
     align 2^1 (2)
    reloff 0
    nreloc 0
     flags 0x80000408
 reserved1 0 (index into indirect symbol table)
 reserved2 6 (size of stubs)
Section
  sectname __stub_helper
   segname __TEXT
      addr 0x00000000001c2508
      size 0x000000000000088a
    offset 1844488
     align 2^2 (4)
    reloff 0
    nreloc 0
     flags 0x80000400
 reserved1 0
 reserved2 0
Section
  sectname __gcc_except_tab
   segname __TEXT
      addr 0x00000000001c2d94
      size 0x000000000003bfa0
    offset 1846676
     align 2^2 (4)
    reloff 0
    nreloc 0
     flags 0x00000000
 reserved1 0
 reserved2 0
Section
  sectname __cstring
   segname __TEXT
      addr 0x00000000001fed40
      size 0x000000000003b1f2
    offset 2092352
     align 2^4 (16)
    reloff 0
    nreloc 0
     flags 0x00000002
 reserved1 0
 reserved2 0
Section
  sectname __const
   segname __TEXT
      addr 0x0000000000239f40
      size 0x000000000000a21c
    offset 2334528
     align 2^5 (32)
    reloff 0
    nreloc 0
     flags 0x00000000
 reserved1 0
 reserved2 0
Section
  sectname __unwind_info
   segname __TEXT
      addr 0x000000000024415c
      size 0x0000000000005e90
    offset 2376028
     align 2^2 (4)
    reloff 0
    nreloc 0
     flags 0x00000000
 reserved1 0
 reserved2 0
Load command 1
      cmd LC_SEGMENT_64
  cmdsize 712
  segname __DATA
   vmaddr 0x000000000024a000
   vmsize 0x0000000000010000
  fileoff 2400256
 filesize 45056
  maxprot 0x00000007
 initprot 0x00000003
   nsects 8
    flags 0x0
Section
  sectname __got
   segname __DATA
      addr 0x000000000024a000
      size 0x0000000000000188
    offset 2400256
     align 2^3 (8)
    reloff 0
    nreloc 0
     flags 0x00000006
 reserved1 221 (index into indirect symbol table)
 reserved2 0
Section
  sectname __nl_symbol_ptr
   segname __DATA
      addr 0x000000000024a188
      size 0x0000000000000010
    offset 2400648
     align 2^3 (8)
    reloff 0
    nreloc 0
     flags 0x00000006
 reserved1 270 (index into indirect symbol table)
 reserved2 0
Section
  sectname __la_symbol_ptr
   segname __DATA
      addr 0x000000000024a198
      size 0x00000000000006e8
    offset 2400664
     align 2^3 (8)
    reloff 0
    nreloc 0
     flags 0x00000007
 reserved1 272 (index into indirect symbol table)
 reserved2 0
Section
  sectname __mod_init_func
   segname __DATA
      addr 0x000000000024a880
      size 0x0000000000000040
    offset 2402432
     align 2^3 (8)
    reloff 0
    nreloc 0
     flags 0x00000009
 reserved1 0
 reserved2 0
Section
  sectname __const
   segname __DATA
      addr 0x000000000024a8c0
      size 0x0000000000005090
    offset 2402496
     align 2^4 (16)
    reloff 0
    nreloc 0
     flags 0x00000000
 reserved1 0
 reserved2 0
Section
  sectname __data
   segname __DATA
      addr 0x000000000024f950
      size 0x0000000000004aa0
    offset 2423120
     align 2^4 (16)
    reloff 0
    nreloc 0
     flags 0x00000000
 reserved1 0
 reserved2 0
Section
  sectname __bss
   segname __DATA
      addr 0x0000000000254400
      size 0x0000000000004fb6
    offset 0
     align 2^5 (32)
    reloff 0
    nreloc 0
     flags 0x00000001
 reserved1 0
 reserved2 0
Section
  sectname __common
   segname __DATA
      addr 0x00000000002593b8
      size 0x0000000000000059
    offset 0
     align 2^3 (8)
    reloff 0
    nreloc 0
     flags 0x00000001
 reserved1 0
 reserved2 0
Load command 2
      cmd LC_SEGMENT_64
  cmdsize 72
  segname __LINKEDIT
   vmaddr 0x000000000025a000
   vmsize 0x0000000000085000
  fileoff 2445312
 filesize 543516
  maxprot 0x00000007
 initprot 0x00000001
   nsects 0
    flags 0x0
Load command 3
          cmd LC_ID_DYLIB
      cmdsize 80
         name /usr/local/opt/opencv/lib/libopencv_core.3.4.dylib (offset 24)
   time stamp 1 Wed Dec 31 16:00:01 1969
      current version 3.4.1
compatibility version 3.4.0
Load command 4
            cmd LC_DYLD_INFO_ONLY
        cmdsize 48
     rebase_off 2445312
    rebase_size 1616
       bind_off 2446928
      bind_size 5176
  weak_bind_off 2452104
 weak_bind_size 1560
  lazy_bind_off 2453664
 lazy_bind_size 7616
     export_off 2461280
    export_size 55288
Load command 5
     cmd LC_SYMTAB
 cmdsize 24
  symoff 2523664
   nsyms 8017
  stroff 2653908
 strsize 334920
Load command 6
            cmd LC_DYSYMTAB
        cmdsize 80
      ilocalsym 0
      nlocalsym 5832
     iextdefsym 5832
     nextdefsym 1824
      iundefsym 7656
      nundefsym 361
         tocoff 0
           ntoc 0
      modtaboff 0
        nmodtab 0
   extrefsymoff 0
    nextrefsyms 0
 indirectsymoff 2651936
  nindirectsyms 493
      extreloff 0
        nextrel 0
      locreloff 0
        nlocrel 0
Load command 7
     cmd LC_UUID
 cmdsize 24
    uuid 148A22D3-49C6-3F35-BA2C-E3C83AEC474A
Load command 8
      cmd LC_VERSION_MIN_MACOSX
  cmdsize 16
  version 10.9
      sdk 10.13
Load command 9
      cmd LC_SOURCE_VERSION
  cmdsize 16
  version 0.0
Load command 10
          cmd LC_LOAD_DYLIB
      cmdsize 64
         name /usr/local/opt/tbb/lib/libtbb.dylib (offset 24)
   time stamp 2 Wed Dec 31 16:00:02 1969
      current version 0.0.0
compatibility version 0.0.0
Load command 11
          cmd LC_LOAD_DYLIB
      cmdsize 48
         name /usr/lib/libz.1.dylib (offset 24)
   time stamp 2 Wed Dec 31 16:00:02 1969
      current version 1.2.11
compatibility version 1.0.0
Load command 12
          cmd LC_LOAD_DYLIB
      cmdsize 88
         name /System/Library/Frameworks/OpenCL.framework/Versions/A/OpenCL (offset 24)
   time stamp 2 Wed Dec 31 16:00:02 1969
      current version 1.0.0
compatibility version 1.0.0
Load command 13
          cmd LC_LOAD_DYLIB
      cmdsize 96
         name /System/Library/Frameworks/Accelerate.framework/Versions/A/Accelerate (offset 24)
   time stamp 2 Wed Dec 31 16:00:02 1969
      current version 4.0.0
compatibility version 1.0.0
Load command 14
          cmd LC_LOAD_DYLIB
      cmdsize 56
         name /usr/lib/libSystem.B.dylib (offset 24)
   time stamp 2 Wed Dec 31 16:00:02 1969
      current version 1252.0.0
compatibility version 1.0.0
Load command 15
          cmd LC_LOAD_DYLIB
      cmdsize 48
         name /usr/lib/libc++.1.dylib (offset 24)
   time stamp 2 Wed Dec 31 16:00:02 1969
      current version 400.9.0
compatibility version 1.0.0
Load command 16
      cmd LC_FUNCTION_STARTS
  cmdsize 16
  dataoff 2516568
 datasize 6528
Load command 17
      cmd LC_DATA_IN_CODE
  cmdsize 16
  dataoff 2523096
 datasize 568
Load command 18
          cmd LC_RPATH
      cmdsize 48
         path /usr/local/Cellar/opencv/3.4.1/lib (offset 12)

这是

的输出
  

brew edit opencv

class Opencv < Formula
desc "Open source computer vision library"
 homepage "https://opencv.org/"
url "https://github.com/opencv/opencv/archive/3.4.1.tar.gz"
sha256 "ac627047c2afbbcb0ddd9583342f03c8e700032c9a77721a52c39c9d96790dbb"

 bottle do
  sha256 "e076e80bc5fe389bab1a8c1ba767fe737d4143b832830829681b5114203f0a78" => :high_sierra
  sha256 "afac0a89c93c20e90b28292a72a91d088ef03b528f82ed01679f92df6696e56c" => :sierra
   sha256 "639b043ae297109902edea2a6fcfff7da74caed73f3e5a5cc0fddf9743dc8fbe" => :el_capitan
 end

depends_on "cmake" => :build
 depends_on "pkg-config" => :build
 depends_on "eigen"

needs :cxx11

resource "contrib" do
  url "https://github.com/opencv/opencv_contrib/archive/3.4.1.tar.gz"
  sha256 "298c69ee006d7675e1ff9d371ba8b0d9e7e88374bb7ba0f9d0789851d352ec6e"
end

def install
  ENV.cxx11

  resource("contrib").stage buildpath/"opencv_contrib"

  args = std_cmake_args + %W[
  -DCMAKE_OSX_SYSROOT=/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk
  -DCMAKE_OSX_DEPLOYMENT_TARGET=10.9
  -DBUILD_opencv_aruco=OFF
  -DBUILD_opencv_bgsegm=OFF
  -DBUILD_opencv_bioinspired=OFF
  -DBUILD_opencv_calib3d=OFF
  -DBUILD_opencv_ccalib=OFF
  -DBUILD_opencv_dpm=OFF
  -DBUILD_opencv_face=OFF
  -DBUILD_opencv_fuzzy=OFF
  -DBUILD_opencv_img_hash=OFF
  -DBUILD_opencv_line_descriptor=OFF
  -DBUILD_opencv_optflow=OFF
  -DBUILD_opencv_phase_unwrapping=OFF
  -DBUILD_opencv_reg=OFF
  -DBUILD_opencv_rgbd=OFF
  -DBUILD_opencv_saliency=OFF
  -DBUILD_opencv_shape=OFF
  -DBUILD_opencv_stereo=OFF
  -DBUILD_opencv_stitching=OFF
  -DBUILD_opencv_structured_light=OFF
  -DBUILD_opencv_superres=OFF
  -DBUILD_opencv_surface_matching=OFF
  -DBUILD_opencv_videostab=OFF
  -DBUILD_opencv_xfeatures2d=OFF
  -DBUILD_opencv_ximgproc=OFF
  -DBUILD_opencv_xobjdetect=OFF
  -DBUILD_opencv_xphoto=OFF
  -DCMAKE_BUILD_TYPE=RELEASE
  -DWITH_OPENMP=ON
  -DWITH_IPP=ON
  -DWITH_NVCUVID=ON
  -DBUILD_opencv_cudaarithm=ON
  -DBUILD_opencv_cudafilters=ON
  -DBUILD_opencv_cudaimgproc=ON
  -DBUILD_opencv_cudafeatures2d=ON
  -DWITH_CUDA=ON
  -DENABLE_FAST_MATH=1
  -DCUDA_FAST_MATH=1
  -DWITH_CUBLAS=1
  -DWITH_CUFFT=1
  -DWITH_CSTRIPES=ON
  -DBUILD_JASPER=OFF
  -DBUILD_JPEG=ON
  -DBUILD_OPENEXR=ON
  -DBUILD_PERF_TESTS=OFF
  -DBUILD_PNG=ON
  -DBUILD_TESTS=OFF
  -DBUILD_TIFF=ON
  -DBUILD_ZLIB=OFF
  -DBUILD_opencv_java=OFF
  -DOPENCV_ENABLE_NONFREE=OFF
  -DOPENCV_EXTRA_MODULES_PATH=#{buildpath}/opencv_contrib/modules
  -DWITH_1394=OFF
  -DWITH_EIGEN=ON
  -DWITH_FFMPEG=OFF
  -DWITH_GPHOTO2=OFF
  -DWITH_GSTREAMER=OFF
  -DWITH_JASPER=OFF
  -DWITH_OPENEXR=ON
  -DWITH_OPENGL=OFF
  -DWITH_QT=OFF
  -DWITH_TBB=ON
  -DWITH_VTK=OFF
  -DBUILD_opencv_python2=OFF
  -DBUILD_opencv_python3=OFF
  -DCPU_BASELINE=SSE2
  -DCPU_DISPATCH=SSE4_2,AVX2
]

if build.bottle?
  args += %w[-DCPU_BASELINE=SSE2 -DCPU_DISPATCH=SSE4_2,AVX]
end

mkdir "build" do
  system "cmake", "..", *args
  system "make"
  system "make", "install"
  end
end

test do
  (testpath/"test.cpp").write <<~EOS
    #include <opencv/cv.h>
    #include <iostream>
    int main() {
      std::cout << CV_VERSION << std::endl;
    return 0;
  }
EOS
system ENV.cxx, "test.cpp", "-I#{include}", "-L#{lib}", "-o", "test"
assert_equal `./test`.strip, version.to_s

["python", "python3"].each do |python|
  output = shell_output("#{python} -c 'import cv2; print(cv2.__version__)'")
  assert_equal version.to_s, output.chomp
  end
 end
end

0 个答案:

没有答案