gpt4 book ai didi

c++ - 来自 autoconf 测试的错误编译命令

转载 作者:行者123 更新时间:2023-11-27 23:06:57 24 4
gpt4 key购买 nike

我正在尝试为 C++ 库编写 autoconf 测试。我关注了http://nerdland.net/2009/07/detecting-c-libraries-with-autotools/ .我的支票看起来像这样:

SAVED_LDFLAGS=$LDFLAGS
LDFLAGS="$LDFLAGS -lMyLib"
AC_LINK_IFELSE(
[AC_LANG_PROGRAM([#include <mylibheader.hpp>],
[MyLibNamespace::SomeObject obj()])],
[TEST_LIBS="$TEST_LIBS -lMyLib"] [HAVE_MYLIB=1],
[AC_MSG_ERROR([libMyLib is not installed.])])
LDFLAGS=$SAVED_LDFLAGS

测试失败。如果我检查 config.log,问题似乎出在 autoconf 为检查提供的生成的编译命令上:

g++ -o conftest -g -O2   -lMyLib conftest.cpp

如您所见,-l 参数不在最后,在所有输入和输出之后。如果我从 config.log 复制并粘贴 conftest.cpp 代码,我可以使用以下命令编译它:

g++ -o conftest -g -O2  conftest.cpp -lMyLib 

autoconf怎么会错呢?我该如何解决这个问题?

最佳答案

问题是您将 -lMyLib 添加到 LDFLAGS 而不是添加到 LIBS。换句话说,改为这样做:

SAVED_LIBS=$LIBS
LIBS="-lMyLib $LIBS"
AC_LINK_IFELSE(
[AC_LANG_PROGRAM([#include <mylibheader.hpp>],
[MyLibNamespace::SomeObject obj()])],
[TEST_LIBS="$TEST_LIBS -lMyLib"] [HAVE_MYLIB=1],
[AC_MSG_ERROR([libMyLib is not installed.])])
LIBS=$SAVED_LIBS

编辑:库的链接顺序很重要,所以我更新了 LIBS= 行以链接 MyLib 其他库(如果有),假设 MyLib 可能依赖于其他库。

关于c++ - 来自 autoconf 测试的错误编译命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22968890/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com