我有一个 .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])
并根据此检测设置适当的标志。
关于linux - 检测 m4 文件中的 ld 标志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29780102/