从源代码构建gperf

问题描述 投票:3回答:3

我正在尝试从源代码构建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

所有这些之后,我已经在./configure根目录中重新运行了gperf

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
configure autotools
3个回答
5
投票

您也需要libunwind标头。安装libunwind-devel软件包或等效软件包。


0
投票

类似于bwzhou的建议,我尝试关注此帖子...

How to add include and lib paths to configure/make cycle?

...并且最终能够通过事先编译的libunwind-1.2.1编译gperftools时克服“致命错误:libunwind.h:没有这样的文件或目录”错误。更具体地说,我使用以下命令设置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;进行安装。我希望这会有所帮助。


-2
投票

当调用configure时,请尝试使用CPPFLAGS而不是CFLAGS。

© www.soinside.com 2019 - 2024. All rights reserved.