1

我正在尝试为希望将其包含在 Photoshop 插件中的客户编译我们的 lib 的 Mac 版本,但他无法将我们的 lib 链接到他的应用程序中。更详细的信息:他的插件是针对 CS4 Photoshop SDK 构建的,这意味着 Mac OS 基础 SDK 应该是 10.4。我的库是静态库,使用英特尔编译器 11.1 编译,基础 SDK 也设置为 10.4。

我针对我编写的一个小型测试应用程序测试了我的库,它可以编译并且工作正常(在 10.5 上)。为了复制我客户的环境,该应用程序使用 gcc 编译,并使用 10.4 基础 SDK。虽然对我来说很好,但我的客户无法设法与我的库链接。问题如下:未定义符号:“_fputs$UNIX2003”,引用自:libMyLib.a(libm_error.o) 中的 _write_message

当我用 gcc 编译我的库时,所有其他项目设置都相同,很好,他可以生成一个可执行文件。一旦我用 ICL 编译,它就会崩溃。会不会是 ICL 11.1 与 10.4 不兼容?在 Fortran 编译器论坛上,我找到了以下答案:“从提供的输出来看,Xcode 默认为 Mac OS X 10.4,11.1 编译器不支持。” ( http://software.intel.com/en-us/forums/intel-fortran-compiler-for-linux-and-mac-os-x/topic/68647/ ) 这是否意味着 ICL 11.1 不能在 10.4 上运行,或者它生成的代码在 10.4 上不起作用?

在下一页(http://software.intel.com/en-us/articles/performance-tools-for-software-developers-compatibility-of-intel-compiler-for-mac-os-x-and-xcode /),它还说 ICL 11.1 与 10.4 不兼容(同样的问题:兼容性是什么意思?)。但是,它说 ICL 10.1 是,所以我尝试了。但是现在,出于同样的原因,即使是我自己的测试应用程序也没有链接(未定义的函数 $UNIX2003)。

有谁知道问题是什么,以及如何解决?或者有办法解决它?

提前致谢,

一个

PS:如果有人知道这意味着什么,则加分: ld:在可滑动图像中不允许在来自 libMyLib.a(Cholesky.o) 的 _Cholesky 中使用的绝对寻址(也许是 -mdynamic-no-pic)。使用“-read_only_relocs suppress”启用文本重定位

4

2 回答 2

1

所以答案是:用 ICL 10.1 编译,而不是 11.1。10.1 使用的所有 Intel 库都不包含对 $UNIX2003 例程的引用。

希望它可以帮助某人。

一个

于 2009-11-03T10:34:13.473 回答
0

最终,您将需要从英特尔获得英特尔产品支持,但如果您想销售真正有效的 Mac 软件,那么您可能应该只使用与其他人相同的工具链,然后忘记它。

于 2009-10-30T19:29:38.407 回答