检测 m4 文件中的 ld 标志

Detect ld flags in m4 files

我有一个 .m4 文件,它向链接器附加了一些标志,其中之一设置了 rpath 标志。该脚本最初是为使用 -rpath=<value> 的 ld 的 GNU 版本编写的,但是,我正在尝试 运行 OSX 上的脚本,其中 ld 的版本使用 -rpath <value>.最终结果是我在 config.log:

中看到了这个

ld: unknown option: -rpath=path/to/stuff

有没有办法检测 ld 如何期望从我的 .m4 文件中传入标志,以便我可以根据可用版本输出正确的格式?

您可以尝试在脚本中使用 AC_LINK_IFELSE 宏来检测给定标志的链接是否成功,例如:

AC_MSG_CHECKING([for rpath flag style])

saved_cflags="$CFLAGS"
CFLAGS="$CFLAGS -Wl,-rpath=."
AC_LINK_IFELSE([AC_LANG_SOURCE([int main(){ return 0;}])],
               [RPATH_FLAG=gnu],
               [RPATH_FLAG=none])
CFLAGS="$saved_cflags"

if test "x$RPATH_FLAG" = "xnone"; then
CFLAGS="$CFLAGS -Wl,-rpath,."
AC_LINK_IFELSE([AC_LANG_SOURCE([int main(){ return 0;}])],
               [RPATH_FLAG=llvm],
               [RPATH_FLAG=none])
CFLAGS="$saved_cflags"
fi

AC_MSG_RESULT([$RPATH_FLAG])

并根据此检测设置适当的标志。