检测m4文件中的ld标志

时间:2015-04-21 18:16:41

标签: linux macos ld autoconf

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

  

ld:未知选项:-rpath = path / to / stuff

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

1 个答案:

答案 0 :(得分:1)

您可以尝试使用脚本中的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])

根据此检测设置正确的标记。