Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.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
Macos 在通过cmake编译mac通用库时,包括i386和x86_64的不同头_Macos_Openssl_Cmake - Fatal编程技术网

Macos 在通过cmake编译mac通用库时,包括i386和x86_64的不同头

Macos 在通过cmake编译mac通用库时,包括i386和x86_64的不同头,macos,openssl,cmake,Macos,Openssl,Cmake,我正在mac上建立一个通用库。我的库对openssl库使用openssl函数和链接。我可以分别为i386和x86_64编译openssl代码,然后创建fat库,使其成为i386和x86_64的通用库 通过设置cmake_OSX_architecture=i386,通过cmake编译我的库;x86_64使其在i386和x86_64之间通用 为i386和x86_64生成的openssl头是不同的。如何使cmake为i386和x86\u 64选择不同的头?好吧,当前的openssl构建过程不直接支持O

我正在mac上建立一个通用库。我的库对
openssl
库使用
openssl
函数和链接。我可以分别为i386和x86_64编译
openssl
代码,然后创建fat库,使其成为i386和x86_64的通用库

通过设置
cmake_OSX_architecture=i386,通过
cmake
编译我的库;x86_64
使其在i386和x86_64之间通用
为i386和x86_64生成的
openssl
头是不同的。如何使
cmake
为i386和x86\u 64选择不同的头?

好吧,当前的openssl构建过程不直接支持OS X通用构建。一种方法是单独编译每个架构,然后使用
lipo-combine
将每个库文件的两个变体组合成一个组合的通用文件。请参见
man 1 lipo
。这里有一个例子:

在为mac编译通用库时,包括i386和x86_64的不同头

我不相信你能为一个通用的或胖库做到这一点

在这种情况下,如果您希望体系结构有不同的头,您可能需要跳到一个框架,因为一个框架允许多组头。但我不认为我见过它被用于架构独立

在以下目录下讨论捆绑包的磁盘上布局:


是的,我可以将两个openssl库组合成一个fat库,但是i386和x86_64体系结构之间的openssl头是不同的。我怎样才能创建一个统一的标题?我不知道是否有人尝试过这样做。您是否在头文件中找到了预处理器条件未涵盖的特定于体系结构的值?苹果OS X 10.6的openssl端口在这里:当前的MacPorts端口文件在这里:。这两个版本都支持通用版本,但是,快速浏览一下,我没有看到任何试图修补头文件的尝试。这是关于头文件的一个有趣的观察。您能否编辑您的问题并添加i386标题和x96_64标题之间差异的示例?我这样问是因为我为iOS构建了fat库,它们包括ARM和i386(i386用于模拟器调试)。
Directory     | Description
--------------+---------------------------------------------------------------------------------
Headers       | Contains any public headers you want to make available to external developers.
--------------+---------------------------------------------------------------------------------
Documentation | Contains HTML or PDF files describing the framework interfaces. Typically, 
              | documentation directories do not reside at the top level of your framework.
              | Instead, they reside inside your language-specific resource directories.
--------------+---------------------------------------------------------------------------------
Libraries     | Contains any secondary dynamic libraries your framework requires.