2

我正在尝试使用与 Leopard 相同的 CMakeLists.txt 文件在 Snow Leopard 上编译我的项目,但是编译失败并显示以下错误消息:

   Linking C executable cmTryCompileExec

  "/Applications/CMake 2.6-4.app/Contents/bin/cmake" -E cmake_link_script
  CMakeFiles/cmTryCompileExec.dir/link.txt --verbose=1

  /Developer/usr/bin/gcc -Wl,-search_paths_first -headerpad_max_install_names
  -fPIC CMakeFiles/cmTryCompileExec.dir/testCCompiler.c.o -o cmTryCompileExec


  ld: library not found for -lcrt1.10.5.o

  collect2: ld returned 1 exit status

  make[1]: *** [cmTryCompileExec] Error 1

似乎 cmake 的默认行为是在 MACOSX 上编译通用二进制文件,但是 Snow Leopard 不再支持通用二进制文件,因此我们得到了上述错误。在 Mac 上使用 cmake 仅生成 Intel 二进制文件时,有没有办法禁用与 -lcrt1.10.5.o 的链接?

4

2 回答 2

2

尽管 CMAKE_OSX_ARCHITECTURES 设置为 i386,但这似乎是 cmake 编译 x86_64 二进制文件的错误。

http://public.kitware.com/Bug/view.php?id=9466

作为临时解决方法,我正在使用

CMAKE_OSX_ARCHITECTURES = i386;ppc

于 2009-09-01T17:32:13.677 回答
2

另一个临时解决方法是将以下内容传递给 CMake:

-DCMAKE_C_FLAGS=-m32 -DCMAKE_CXX_FLAGS=-m32

这告诉 GCC 编译 32 位二进制文​​件,并且不需要像上面那样编译 ppc 二进制文件。

于 2009-09-02T09:16:01.800 回答