Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python opencv/macports应用程序的py2app错误。如何使用headerpad\u max\u install\u names标志编译opencv?_Python_Macos_Opencv_Macports_Py2app - Fatal编程技术网

Python opencv/macports应用程序的py2app错误。如何使用headerpad\u max\u install\u names标志编译opencv?

Python opencv/macports应用程序的py2app错误。如何使用headerpad\u max\u install\u names标志编译opencv?,python,macos,opencv,macports,py2app,Python,Macos,Opencv,Macports,Py2app,我正在尝试使用opencv和pygame构建一个应用程序。这两个LIB已与macports一起安装。我还在macports python中安装了py2app。 我正在运行一个简单的py2app脚本 from setuptools import setup setup( app = [ '/full/path/to/my_script.py', ], options={ "py2app":{ 'argv_emulat

我正在尝试使用opencv和pygame构建一个应用程序。这两个LIB已与macports一起安装。我还在macports python中安装了py2app。 我正在运行一个简单的py2app脚本

from setuptools import setup

setup(
    app = [
        '/full/path/to/my_script.py',
    ],
    options={
        "py2app":{
            'argv_emulation': True, 
        }
    },
    setup_requires=['py2app']
)
不幸的是,py2app失败并出现以下错误:“ValueError:新Mach-O标头太大,无法重新定位”

是否可以使用opencv和macports制作应用程序包

谢谢你的帮助

更新:

以下是ronaldoussoren的答案,他是py2app的开发者:

OSX上的共享库包含指向其位置的绝对路径, 同样,所有使用过的库也使用绝对 路径Py2app使用macholib将这些提及重写为相对路径 以“@executable_path”开头。对于位于 /opt/local新路径比旧路径需要更多空间,因此 错误消息。确保有足够空间的一种方法是 链接器标志“headerpad\u max\u install\u names”。我不知道该怎么说 darwinports在构建opencv时添加此标志

还请注意,我对pyinstaller也有类似的问题

我试图在不做任何更改的情况下修改opencv端口文件。我真的不知道在哪里添加这个链接器标志

知道怎么修吗

更新:这是我的端口文件

# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
# $Id: Portfile 99165 2012-10-28 22:56:03Z jeremyhu@macports.org $

PortSystem                      1.0
PortGroup                       cmake 1.0

name                            opencv
version                         2.4.2
revision                        2
categories                      graphics science
license                         BSD
platforms                       darwin
maintainers                     nomaintainer

description                     Intel(R) Open Source Computer Vision Library

long_description                opencv is a library that is mainly aimed at real time \
                                computer vision. Some example areas would be \
                                Human-Computer Interaction (HCI), Object Identification, \
                                Segmentation and Recognition, Face Recognition, Gesture \
                                Recognition, Motion Tracking, Ego Motion, Motion \
                                Understanding, Structure From Motion (SFM), and Mobile \
                                Robotics.

homepage                        http://opencv.willowgarage.com/wiki/
master_sites                    sourceforge:project/opencvlibrary/opencv-unix/${version}
use_bzip2                       yes
distname                        OpenCV-${version}

checksums                       rmd160  496964503629b0ff4432fbdd276837ab3f134411 \
                                sha256  690023811e03e21df996291392fcf78e43e42ef557b9307503c74c74b4272c28

depends_build-append            port:pkgconfig

depends_lib-append              port:zlib \
                                path:lib/libavcodec.dylib:ffmpeg \
                                port:libpng \
                                port:tiff \
                                port:jasper \
                                port:jpeg \
                                port:bzip2 \
                                port:openexr \
                                port:ilmbase \
                                port:eigen3

patchfiles                      patch-fix_dirname_case.diff \
                                patch-install_name.diff

configure.args-append           -DBUILD_NEW_PYTHON_SUPPORT=OFF \
                                -DBUILD_EXAMPLES=ON \
                                -DINSTALL_C_EXAMPLES=ON \
                                -DBZIP2_LIBRARIES=${prefix}/lib/libbz2.dylib \
                                -DZLIB_LIBRARY=${prefix}/lib/libz.dylib \
                                -DWITH_OPENEXR=ON \
                                -DWITH_1394=OFF \
                                -DWITH_EIGEN=ON \
                                -DEIGEN_INCLUDE_PATH=${prefix}/include/eigen3 \
                                -DBUILD_JASPER=OFF \
                                -DBUILD_JPEG=OFF \
                                -DBUILD_PNG=OFF \
                                -DBUILD_TIFF=OFF \
                                -DBUILD_ZLIB=OFF
configure.ldflags-append        "-Wl,-headerpad_max_install_names"

# gcc-4.0 exits with a bus error
if {${configure.compiler} == "gcc-4.0"} {
    configure.compiler gcc-4.2
    if {![file executable ${configure.cc}]} {
        depends_build-append port:apple-gcc42
        depends_skip_archcheck-append apple-gcc42
        configure.compiler apple-gcc-4.2
    }
}

platform darwin {
    if {${os.major} <= 9} {
        # Video Decode Acceleration Framework is not available
        patchfiles-append       patch-highgui_CMakeLists.txt.diff
    }
}

post-destroot {
    xinstall -d ${destroot}${prefix}/lib/cmake
    move ${destroot}${prefix}/share/OpenCV/OpenCVConfig-version.cmake \
        ${destroot}${prefix}/share/OpenCV/OpenCVConfig.cmake \
        ${destroot}${prefix}/lib/cmake/
}

variant dc1394 description {Use libdc1394 for FireWire camera. Breaks compatibility with Apple iSight FireWire camera.} {
    depends_lib-append          port:libdc1394
    configure.args-delete       -DWITH_1394=OFF
    configure.args-append       -DWITH_1394=ON \
                                -DHAVE_1394=ON
}

variant qt4 description {Use qt4 backend for graphical interface.} {
    PortGroup                   qt4 1.0
    configure.args-append       -DWITH_QT=ON
}

variant python26 conflicts python27 description {Add Python 2.6 bindings} {
    depends_lib-append          port:python26 \
                                port:py26-numpy
    configure.args-delete       -DBUILD_NEW_PYTHON_SUPPORT=OFF
    configure.args-append       -DINSTALL_PYTHON_EXAMPLES=ON \
                                -DBUILD_NEW_PYTHON_SUPPORT=ON \
                                -DPYTHON_EXECUTABLE=${prefix}/bin/python2.6 \
                                -DPYTHON_LIBRARY=${prefix}/lib/libpython2.6.dylib \
                                -DPYTHON_INCLUDE_DIR=${frameworks_dir}/Python.framework/Versions/2.6/Headers \
                                -DPYTHON_PACKAGES_PATH=${frameworks_dir}/Python.framework/Versions/2.6/lib/python2.6/site-packages
}

variant python27 conflicts python26 description {Add Python 2.7 bindings} {
    depends_lib-append          port:python27 \
                                port:py27-numpy
    configure.args-delete       -DBUILD_NEW_PYTHON_SUPPORT=OFF
    configure.args-append       -DINSTALL_PYTHON_EXAMPLES=ON \
                                -DBUILD_NEW_PYTHON_SUPPORT=ON \
                                -DPYTHON_EXECUTABLE=${prefix}/bin/python2.7 \
                                -DPYTHON_LIBRARY=${prefix}/lib/libpython2.7.dylib \
                                -DPYTHON_INCLUDE_DIR=${frameworks_dir}/Python.framework/Versions/2.7/Headers \
                                -DPYTHON_PACKAGES_PATH=${frameworks_dir}/Python.framework/Versions/2.7/lib/python2.7/site-packages
    configure.ldflags-append    "-Wl,-headerpad_max_install_names"
}

variant tbb description {Use Intel TBB} {
    depends_lib-append          port:tbb
    configure.args-append       -DWITH_TBB=ON \
                                -DHAVE_TBB=ON \
                                -DTBB_INCLUDE_DIRS=${prefix}/include \
                                -DOPENCV_LINKER_LIBS="-ltbb -ltbbmalloc"
}

livecheck.type                  sourceforge
livecheck.name                  opencvlibrary
livecheck.regex                 /OpenCV-(\[0-9a-z.\]+)${extract.suffix}
#-*-编码:utf-8;模式:tcl;标签宽度:4;缩进制表符模式:无;c-basic-offset:4-*-vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
#$Id:Portfile 99165 2012-10-28 22:56:03Zjeremyhu@macports.org $
PortSystem 1.0
端口组cmake 1.0
名称opencv
版本2.4.2
修订2
图形学分类
许可证BSD
达尔文平台
维修工
说明英特尔(R)开源计算机视觉库
long_description opencv是一个主要针对实时性的库\
计算机视觉。以下是一些示例领域:\
人机交互(HCI)、对象识别、\
分割与识别、人脸识别、手势\
识别,运动跟踪,自我运动,运动\
理解、运动结构(SFM)和移动\
机器人技术。
主页http://opencv.willowgarage.com/wiki/
master_sites sourceforge:project/opencvlibrary/opencvunix/${version}
使用“是”
distname OpenCV-${version}
校验和rmd160 496964503629b0ff4432fbdd276837ab3f134411\
sha256 690023811E03E21DF996291392FCf78E43E42EF557B9307503C74C74B4272C228
依赖于\u构建附加端口:pkgconfig
依赖于\u lib-append端口:zlib\
路径:lib/libavcodec.dylib:ffmpeg\
端口:libpng\
端口:tiff\
港口:贾斯珀\
端口:jpeg\
端口:bzip2\
端口:openexr\
港口:伊尔姆巴斯\
端口:3
patchfiles修补程序\u dirname\u case.diff\
patch-install_name.diff
configure.args-append-DBUILD\u NEW\u PYTHON\u SUPPORT=OFF\
-DBUILD_EXAMPLES=ON\
-DINSTALL_C_示例=ON\
-DBZIP2_LIBRARIES=${prefix}/lib/libbz2.dylib\
-DZLIB_LIBRARY=${prefix}/lib/libz.dylib\
-DWITH_OPENEXR=ON\
-DWITH_1394=关闭\
-DWITH_EIGEN=ON\
-DEIGEN_INCLUDE_PATH=${prefix}/INCLUDE/eigen3\
-DBUILD_JASPER=关闭\
-DBUILD_JPEG=关闭\
-DBUILD_PNG=OFF\
-DBUILD\u TIFF=关闭\
-DBUILD_ZLIB=关闭
configure.ldflags-append“-Wl,-headerpad\u max\u install\u names”
#gcc-4.0退出时出现总线错误
如果{${configure.compiler}==“gcc-4.0”}{
configure.gcc-4.2编译器
如果{![文件可执行文件${configure.cc}]}{
取决于构建附加端口:apple-gcc42
取决于\u跳过\u archcheck-append apple-gcc42
configure.compiler apple-gcc-4.2
}
}
达尔文平台{
如果{${os.major}您需要添加

configure.ldflags-append“-Wl,-headerpad\u max\u install\u names”

在OpenCV端口文件中
configure.args append
行附近的某处。()

我希望这可以解决您的问题。否则,您可能还必须使用该标志编译OpenCV的所有依赖项,这可能需要大量工作。您可能需要查看是否存在这种情况,并希望在默认情况下启用headerpad_max_install_names标志


如果您希望保留对Portfile的更改,而不是在下一次更新OpenCV时撤消,则可以按照中的说明操作。但是,这将阻止自动安装OpenCV更新!

昨天,我在py2app开发人员的指导下找到了一个解决方案

首先,要知道,-Xlinker,-Wl和,-headpad…标志并没有解决我的问题,尽管我仍然将它们保存在macports.conf中。对我来说,关键是增加macports文件的深度并降低构建目录文件的深度。具体地说,我安装了带有--prefix=/opt/localdepth/localdepth/locald的macports