Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.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 版本交叉编译程序中的静态库_Macos_Static Libraries - Fatal编程技术网

Macos 版本交叉编译程序中的静态库

Macos 版本交叉编译程序中的静态库,macos,static-libraries,Macos,Static Libraries,我有一个unix命令行应用程序(带有大的生成文件),我正试图在mac上运行。我在10.6系统上编译它,当然还有所有合适的库。部署环境是一个10.5系统,没有额外的库 我编译时没有使用-dynamic,正确地说,它似乎有静态库。当我在10.6系统上运行它时,它工作正常。但是,当我在10.5系统上运行它时,我得到: dyld:未知的必需加载命令0x80000022 当我使用10.5xcode为10.6系统编译东西时,我遇到了同样的错误,所以看起来像是版本不匹配类型的问题。但是,我使用了gcc-4.0

我有一个unix命令行应用程序(带有大的生成文件),我正试图在mac上运行。我在10.6系统上编译它,当然还有所有合适的库。部署环境是一个10.5系统,没有额外的库

我编译时没有使用-dynamic,正确地说,它似乎有静态库。当我在10.6系统上运行它时,它工作正常。但是,当我在10.5系统上运行它时,我得到:

dyld:未知的必需加载命令0x80000022

当我使用10.5xcode为10.6系统编译东西时,我遇到了同样的错误,所以看起来像是版本不匹配类型的问题。但是,我使用了gcc-4.0,并且

$CFLAGS=-isysroot/Developer/SDKs/MacOSX10.5.sdk-mmacosx最小版本=10.5

所以应该设置为10.5。。。有什么想法吗

谢谢

编辑一个古老的问题:

我在另一台计算机上有完全相同的问题。这次我是在10.5.8,完全更新,同样的可执行文件仍然在10.6上工作


在我问这个问题后的几个月里,有没有人在这方面有过好运?

根据您使用的库的数量,可能很难将所有库静态链接起来。“otool-L你的双星”告诉你什么

为了给我自己的应用程序提供一个独立的软件包,我在一个非标准目录中安装了一个定制的MacPorts,这样我就可以从该目录与库进行动态链接,只需要要求人们在他们的计算机上的同一个位置安装整个软件包。这不是很好,根本不是Mac精神,而是它是一个Unix应用程序,您需要熟悉Unix才能使用它

祝你好运


Pascal

原来有一个动态库加载函数(0x22)这是在10.5.6中添加的。我运行的系统是10.5.5。我升级到了10.5.8,一切都正常运行!

好的,第二个解决方案,但不是很令人满意,就是找到一台10.5.8计算机,安装开发包并重新编译…同样适用于powerPC…很遗憾,但它可以工作…

我一直在寻找同样的问题,因为我在开发10.6,但必须具有可在10.5上运行的版本。除上述编译器标志外,还应添加:

-无压缩链接编辑

这里描述的是:

上面写着:

通常,当以Mac OS X 10.6为目标时,链接器将在_LINKEDIT段中生成压缩信息。此选项将导致链接器生成传统的重新定位信息。
我是在xcode用户邮件列表上讨论“未知的必需加载命令0x80000022”时到达这里的。

我能够通过将
-mmacox version min=10.5
传递到链接器来解决这个问题的,例如
--extra ldflags=“-mmacox version min=10.5“
传递给
为我正在构建的ffmpeg配置
。更多信息:

dyld 0×80000022
错误的原因可能是,您正在链接
OSX 10.6
,并且
OSX 10.6
将使用
OSX 10.5
无法理解的加载命令(
LC\u dyld\u info\u仅=0×80000022

若要解决此问题,请确保您正在使用部署目标,方法是在link命令之前设置环境变量:

export MACOSX_DEPLOYMENT_TARGET=10.5
(或
setenv MACOSX\u部署\u目标=10.5

您可以随时检查可执行文件是否使用了正确的load命令,如下所示:

otool -l executable 

它将显示
LC\u DYLD\u INFO\u ONLY
(无部署目标)命令或
LC\u DYLD\u INFO
(有部署目标)。

当我搜索问题时,我得到了你的问题。祝你好运呵呵,是的,我在苹果开发网站也有同样的经历。。。我发现了我自己的一个老问题…我也有同样的问题。好吧,至少非标准库(除了/usr/lib/X11/libexpat*,不管是什么,它在10.5时被去除了润滑,但我仍然需要任何原因)在。。。这并不是“未知加载命令”的问题…我还没有想清楚,但现在你提到了,动态加载的库,甚至不会出现在otool-L中,可能是我自己静态链接所有东西时遇到问题的原因。不,在另一台计算机上,10.5.8,它不会运行。。。dagnabit.我在OS X 10.7上构建了一个简单的可执行文件,它在OS X 10.5.10上崩溃,但是您建议的编译器选项-no_compact_linkedit在没有此选项的情况下会生成字节精确输出:(