我在OS X 10.9.2(Mavericks)上编写了一段C代码,并通过链接所需的库(如-lm -lfftw3等)从终端使用gcc编译器对其进行编译。它在我的计算机上工作正常,另一个运行相同的操作系统(也有所需的库),但当我尝试在运行OS X 10.8(Mountain Lion)的另一台计算机上运行可执行文件时,它不起作用。我没有尝试在运行OS X 10.8(Mountain Lion)的计算机上重新编译,因为它没有安装所需的库。如何仅使用计算机上的终端(运行OS X 10.9.2(Mavericks))创建新的可执行文件,以便它可以在任何以前版本的操作系统上运行,而这些操作系统可能永远不会安装所需的库?
感谢。
答案 0 :(得分:1)
这个问题有三种方法:
libm
(数学库)通常存在于所有系统中,因此就像libfftw3
和其他需要重建的库一样。<www.macports.org>
修改强>
为响应您的情况,您可以强制静态链接XCode目标的依赖项,如果是libfftw3
,则替换以下行:
-lfftw3
使用:
-l/full/path/to/libfftw3.a
对目标所链接的所有库重复此操作,然后进行设置。最终的应用程序二进制文件可能在文件大小上要大得多,但是完全自包含。
<强>参考文献:强>
<https://stackoverflow.com/questions/458805/force-static-linking-of-library-linked-to-xcode-target>
<https://stackoverflow.com/questions/22391848/compiling-a-c-program-for-previous-os-x-version>