【问题标题】:Brew installing x86_64 (64-bit) versions on MAC OS X MavericksBrew 在 MAC OS X Mavericks 上安装 x86_64(64 位)版本
【发布时间】:2013-11-14 23:32:39
【问题描述】:

首先,我知道有similar questions,但我运气不好,所以决定自己问一个新的。

我正在尝试 brew 安装 64 位版本的 pjsip,但我总是以 i386 版本结束。

我见过一些人的 brew --env 产生 CFLAGS 和 CXXFLAGS,但由于某种原因,我没有,所以我不知道在哪里设置正确的架构。

$ brew --env
HOMEBREW_CC: clang
HOMEBREW_CXX: clang++
MAKEFLAGS: -j2
CMAKE_PREFIX_PATH: /usr/local
CMAKE_INCLUDE_PATH: /usr/include/libxml2:/System/Library/Frameworks/OpenGL.framework/Versions/Current/Headers
CMAKE_LIBRARY_PATH: /System/Library/Frameworks/OpenGL.framework/Versions/Current/Libraries
PKG_CONFIG_LIBDIR: /usr/lib/pkgconfig:/usr/local/Library/ENV/pkgconfig/10.9
ACLOCAL_PATH: /usr/local/share/aclocal
PATH: /usr/local/Library/ENV/4.3:/usr/bin:/bin:/usr/sbin:/sbin

$ brew --config
HOMEBREW_VERSION: 0.9.5
ORIGIN: https://github.com/mxcl/homebrew
HEAD: 8c19edbdd364200fb2cc9276b0bc49ec4cb98aae
HOMEBREW_PREFIX: /usr/local
HOMEBREW_CELLAR: /usr/local/Cellar
CPU: dual-core 64-bit penryn
OS X: 10.9-x86_64
Xcode: 5.0.1
CLT: 5.0.1.0.1.1382131676
GCC-4.0: build 5494
Clang: 5.0 build 500
X11: 2.7.4 => /opt/X11
System Ruby: 1.8.7-358
Perl: /usr/bin/perl
Python: /Library/Frameworks/Python.framework/Versions/2.7/bin/python => /Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7
Ruby: /usr/bin/ruby => /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby

我看到有人提到 ruby​​ 的版本,我不确定这是否重要,但我的是通用版本:

$ file /usr/bin/ruby 
/usr/bin/ruby: Mach-O universal binary with 2 architectures
/usr/bin/ruby (for architecture x86_64):    Mach-O 64-bit executable x86_64
/usr/bin/ruby (for architecture i386):  Mach-O executable i386

【问题讨论】:

    标签: x86-64 homebrew osx-mavericks


    【解决方案1】:

    brew install -v pjsip 显示:

    ==> ./configure --prefix=/usr/local/Cellar/pjsip/2.1
    checking build system type... i386-apple-darwin13.0.0
    checking host system type... i386-apple-darwin13.0.0
    checking target system type... i386-apple-darwin13.0.0
    

    不知何故,它认为我们在 64 位系统上,这很奇怪,因为我肯定在运行 64 位操作系统。检查 arch-host-OS 检测代码表明它使用arch 来确定架构。出于某种奇怪的原因,这是报告说我们是 32 位系统:

    $ arch
    i386
    

    在linux下:

    $ arch
    x86_64
    

    快速的解决方案是做一个brew edit pjsip,并将第22行更改为:

        system "./configure", "--prefix=#{prefix}", "--host=x86_64-apple-darwin13.0.0", "--target=x86_64-apple-darwin13.0.0", "--host=x86_64-apple-darwin13.0.0"
    

    然后执行brew install pjsip,看起来你有 64 位 pjsip。

    可能可以通过编辑配方来获得正确的拱门来修复,而不仅仅是传递--build--host--target 选项。

    【讨论】:

    • 请注意,它似乎只声称要制作 32 位二进制文​​件——编译后的文件都是 64 位的。
    • 谢谢,看来已经成功了。我不确定它“只是声称”制作 32 位二进制文​​件。我不是理解链接问题的专家,但是当我链接到现在已经消失的“32 位”版本二进制文件时,有一些(全部)丢失的符号。当然,我之前可能遗漏了一些东西。
    • 好吧,毕竟我错了。编译后的文件显然是 64 位的。至少我能够将它们联系起来。我可能只是错过了众多 pjsip 库之一。
    猜你喜欢
    • 2014-10-17
    • 2014-07-08
    • 1970-01-01
    • 2013-11-11
    • 2013-11-17
    • 1970-01-01
    • 2014-04-24
    • 2012-03-18
    • 2015-12-24
    相关资源
    最近更新 更多