c - 将 autoconf 中的共享库 ELF 项目移植到 OS X

标签 c autoconf

如何使用 autoconf 宏有条件地更改配置脚本或通过 AC_OUTPUT 输出的 Makefile 中的值。

目标是使用 AC_CANONICAL_TARGET 或其他方式来识别我在 OS X 上,然后允许我的 Makefiles 通过删除 -shared 并将 -soname 替换为 -dylib_install_name 来调整 LDFLAGS。

所以我基本上需要学习如何使用检查目标主机的条件语句来修改 configure.ac 文件中的 AC_SUBST 值或局部变量。

我必须补充一点,我一直在尝试使用 AC_COMPILE_IFELSE 和 AC_LANG_PROGRAM 来编译这段代码。

#include <unistd.h>
#ifndef __APPLE__
error: This is not apple Darwin
#endif

虽然我没有收到任何错误,但我无法真正确认它是否有效。当我在 FreeBSD 或 Darwin 上运行新脚本时,没有与之相关的输出。我也总是使用 autoconf -Wall。

AC_COMPILE_IFELSE 的第二个和第三个参数是 [is_darwin=yes],[is_darwin=no] 但我如何访问这些值?

非常感谢您的帮助。

最佳答案

好吧,为了解决这个问题,我将通过说 AC_COMPILE_IFELSE 的第二个和第三个参数中的那些变量在整个 configure.ac 脚本中作为 SHELL 变量使用来回答它。事实上,我通过在这两个参数中放置多个变量定义来解决这个问题,因为它们接受多行 Shell 代码,而不仅仅是一个变量定义。

关于c - 将 autoconf 中的共享库 ELF 项目移植到 OS X,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3173394/

相关文章:

c - 无法从用户空间读取 iio 文件

c - 不同微 Controller 中的变量大小是否相同?

c++ - 使用 autoconf 找不到 boost 库 1.52

c++ - 检查 C++ 编译器的存在

linux - 如何在autoconf中完全扩展变量?

solaris - 在 Solaris 网络库中进行 autoconf 链接的规范方法是什么?

c - 在我的 C 认证考试练习中需要帮助解密神秘代码

在 C 中转换指针类型

c - 关于如何在 C 中指定参数值的建议

autotools - 检查框架示例在运行 './configure' 时给我错误