4

我正在尝试从源代码构建 gperf(Google 的分析器)。在构建过程中出现以下错误:

src/stacktrace_config.h:58:5: error: #error Cannnot calculate stack trace: need either libunwind or frame-pointers (see INSTALL file)
src/stacktrace.cc:109:3: error: #error Cannot calculate stack trace: will need to write for your environment
make: *** [stacktrace.lo] Error 1

所以看来我需要libunwind

1)我从 savannah 的 git repo 获得了图书馆。2) 安装在/opt/unwind. 3)我也添加/opt/unwind/lib/pkgconfig到我的PKG_CONFIG_PATH. 4)我进行了编辑libunwind.pc,以便两者pkg-config --cflags --libs libunwind都得出正确的值。5)我添加了libunwind.conf一个/etc/ld.so.conf.d/指向/opt/unwind/lib.

在所有这些之后,我./configuregperf根目录中重新运行。

内容config.log如下:

configure:15852: checking libunwind.h usability
configure:15852: gcc -c -g -O2  conftest.c >&5
conftest.c:67:23: fatal error: libunwind.h: No such file or directory
compilation terminated.
configure:15852: result: no
<***snip****>
configure:15852: checking libunwind.h presence
configure:15852: gcc -E  conftest.c
conftest.c:34:23: fatal error: libunwind.h: No such file or directory
compilation terminated.
<***snip***>
ac_cv_header_libunwind_h=no

所以它似乎仍然不知道在哪里libunwind

然后我尝试使用 CFLAGS 和 LDFLAGS 设置环境变量,如下所示:

arif@khost:~/src/gperf$ CFLAGS=`pkg-config --cflags libunwind` LDFLAGS=`pkg-config --libs libunwind` ./configure

现在config.log似乎更令人费解:

configure:15852: checking libunwind.h usability
 configure:15852: gcc -c -I/opt/unwind/include    conftest.c >&5
 configure:15852: $? = 0
 configure:15852: result: yes
 configure:15852: checking libunwind.h presence
 configure:15852: gcc -E  conftest.c
 conftest.c:34:23: fatal error: libunwind.h: No such file or directory
 compilation terminated.

它首先报告有libunwind.h但后来找不到它。

config.log也有这个奇怪的条目:

configure:15852: WARNING: libunwind.h: accepted by the compiler, rejected b     y the preprocessor!
configure:15852: WARNING: libunwind.h: proceeding with the compiler's result

还有它的竖立ac_cv_header_libunwind_h=yes

如果我在make这里这样做,它会停止并出现以下错误:

In file included from src/stacktrace.cc:65:0:
src/stacktrace_libunwind-inl.h:46:23: fatal error: libunwind.h: No such file or directory
compilation terminated.
make: *** [stacktrace.lo] Error 1
4

3 回答 3

6

你也需要libunwind标题。安装libunwind-devel软件包或同等产品。

于 2015-11-16T14:27:32.820 回答
0

与 bwzhou 的答案类似,我尝试按照这个 SO question 中的答案进行操作:

如何添加包含和库路径来配置/制作循环?

并且能够在fatal error: libunwind.h: No such file or directory使用预先编译的 libunwind-1.2.1 编译 gperftools 时最终克服错误。更具体地说,我使用以下命令设置 CPPFLAGS 和 LDFLAGS:

export CPPFLAGS='-I'$MY_INSTALL_DIR'/include '$CPPFLAGS

export LDFLAGS='-L'$MY_INSTALL_DIR'/lib '$CPPFLAGS

在执行之前./configure --prefix=$MY_INSTALL_DIR,其中 $MY_INSTALL_DIR 是我的个人非标准目录,由于缺乏足够的权限,我必须在我使用的 HPC 集群中安装软件。这样做之后,我能够成功执行make;进行安装。我希望这是有帮助的。

于 2019-11-21T02:37:28.530 回答
-2

调用配置时尝试使用 CPPFLAGS 而不是 CFLAGS。

于 2013-08-24T15:23:12.393 回答