当作为I386/x86_64的通用二进制编译,而在我的64位10.6.2 MacPro1,1执行我不能得到SciPy的32位模式下运行.
在这个答案的帮助下,我构建了一个32/64位的python 2.6.4的intel通用二进制文件,目的是使用arch命令在架构之间进行选择.(我设法使用lipo制作了一些我想要的库的通用二进制文件.)一切正常.然后我根据hyperjeff的文章中的说明安装了scipy ,只是使用了更新的numpy(1.4.0)并且在安装scipy时跳过了关于简单地移动numpy的一点.
现在,除了scipy之外的所有东西似乎都可以正常工作,我确实可以使用arch -i386 python和选择32位和64位模式arch -x86_64 python.
Scipy以32位模式抱怨:
$ arch -x86_64 python -c "import scipy.interpolate; print 'success'"
success
$ arch -i386 python -c "import scipy.interpolate; print 'success'"
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/scipy/interpolate/__init__.py", line 7, in <module>
from interpolate import *
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/scipy/interpolate/interpolate.py", line 13, in <module>
import scipy.special as spec
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/site-packages/scipy/special/__init__.py", line 8, in <module>
from …Run Code Online (Sandbox Code Playgroud) 我在iPad上进行了大多数开发测试.当我测试iPhone应用程序时,它以"兼容性"模式运行,其中小型iPhone应用程序在小窗口或x2放大率下运行.现在我已经创建了一个通用应用程序,它作为原生iPad应用程序运行.为了进行测试,当我没有iPhone方便进行测试时,我想使用模拟的iPhone.
如何构建项目以便iPad以兼容模式运行应用程序?
根据iOS参考库:
在iOS 4.0及更高版本中,可以将各个资源文件标记为仅在特定类型的设备上可用.
这是否意味着如果您要为3.X设备创建通用应用程序,特别是3.2 iPad,则不能将设备特定资源用于~ipad和~iphone后缀?
如果是这样,这是处理特定于设备的资源的正确方法吗?
UIImage* anImage;
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
anImage = [UIImage imageNamed:@"MyImage-iPad.png"];
} else {
anImage = [UIImage imageNamed:@"MyImage-iPhone.png"];
}
Run Code Online (Sandbox Code Playgroud)
我应该知道的任何其他考虑因素?
如何构建提升1.45通用二进制文件?在豹/雪豹?
我正在编写一个通用的iOS应用程序(iPad和iPhone),并且发现自己拥有大量长名称,无法在两个应用程序之间共享:
FamilyViewController_iPhone.h/m
FamilyViewControllerA_iPad.h/m
DetailViewControllerB_iPhone.h/m
DetailViewControllerB_iPad.h/m
Run Code Online (Sandbox Code Playgroud)
同样,这些人内部的类具有完整的名称(包括设备),主要是为了使Interface Builder可以轻松使用它们.
我考虑过像AControllerA.h和BControllerA.h这样的东西,其中A = iPhone和B = iPad,但也没有对这个选项感到兴奋.
在iOS通用应用程序中,类似这样的类的常规约定是什么?或者我(希望)错过了能够避免这种必要性的东西?
简短的问题:你如何使用两个应用程序,一个用于英特尔和另一个ppc,并将它们打包成一个通用二进制文件?
我目前对这个问题的看法:
我已阅读有关通用二进制文件的Apple开发人员文档,但未能找到答案,因此可能无法实现.
由于我不会进入这里的原因,我有两个程序的应用程序(通常使用xtools来编译二进制文件),一个用于Intel Macs,另一个用于Mac> = 10.3.9在PPC上运行.共享资源不是问题.
我可以将MyProg_intel.app和MyProg_ppc.app放入一个zip并以这种方式分发; 但这可能会导致我将分发我的程序的许多人感到困惑.
当我开始我的通用应用程序时,我认为一个目标选项太多了,所以我选择了单独的目标.我通过制作应用程序的iPad部分实现了一半,制作通用应用程序会更容易.问题是,我不能使用Apple的选项将我的iPhone目标转换为Universal,因为已经有单独的目标.有没有一种解决方法可以让我将我的iPhone目标升级到Universal?
我正在尝试使用g ++在MacOSX上构建通用二进制文件.但是,它并没有真正起作用.我试过这个简单的虚拟代码:
#include <iostream>
using namespace std;
int main() {
cout << "Hello" << endl;
}
Run Code Online (Sandbox Code Playgroud)
这很好用:
% g++ test.cpp -arch i386 -arch ppc -arch x86_64 -o test
% file test
test: Mach-O universal binary with 3 architectures
test (for architecture i386): Mach-O executable i386
test (for architecture ppc7400): Mach-O executable ppc
test (for architecture x86_64): Mach-O 64-bit executable x86_64
Run Code Online (Sandbox Code Playgroud)
但是,这不是:
% g++ test.cpp -arch i386 -arch ppc -arch x86_64 -arch ppc64 -o test
In file included from test.cpp:1:
/usr/include/c++/4.2.1/iostream:44:28: …Run Code Online (Sandbox Code Playgroud) 我正在尝试将 Boost 库编译成通用二进制文件(即包含 i386 和 x86_64 架构的构建的“胖”文件)。
发酸互联网和SO我组装了以下说明。
下载 boost(例如从http://www.boost.org/users/download/)
在下载的文件夹中,输入./bootstrap.sh
(或者,在我的情况下./bootstrap.sh --with-libraries=thread,因为我只需要线程库)
类型 ./b2 install cxxflags="-arch i386 -arch x86"
这些步骤将 Boost 线程库安装到/usr/local/lib/(其标准位置)。生成的静态库是一个通用二进制文件。到现在为止还挺好。
$ lipo -i /usr/local/lib/libboost_thread.a
Architectures in the fat file: /usr/local/lib/libboost_thread.a are: i386 x86_64
Run Code Online (Sandbox Code Playgroud)
然而,动态库似乎只针对 x86_64 进行了编译。
$ lipo -i /usr/local/lib/libboost_thread.dylib
Non-fat file: /usr/local/lib/libboost_thread.dylib is architecture: x86_64
Run Code Online (Sandbox Code Playgroud)
我也希望 .dylib 是通用的。有谁知道我如何为 i386 和 x86_64 编译它?
我正在为 Mac 计算机创建一个 JAVA 桌面应用程序,使用 jpackage 将所需的 JRE 捆绑到该应用程序中,最后将 .app 发送给客户。
对于新的 m1 Apple Arm 硅计算机,我不想使用正确的 JRE(Intel 和 Arm)为每个处理器架构创建不同的应用程序,而是创建一个通用二进制应用程序,在 Intel 计算机上启动 Intel JRE,在 Arm 上启动 Arm JRE电脑。我知道这在某种程度上是可能的。
我尝试创建两个 .apps 并从 mac 命令行使用 lipo 工具,但这实际上不起作用。
有什么建议如何继续吗?
universal-binary ×10
macos ×4
xcode ×4
ipad ×3
iphone ×3
ios ×2
architecture ×1
boost ×1
boost-build ×1
boost-thread ×1
c++ ×1
g++ ×1
java ×1
objective-c ×1
osx-leopard ×1
python ×1
resources ×1
scipy ×1