首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从源代码构建gperf

从源代码构建gperf
EN

Stack Overflow用户
提问于 2013-06-05 19:15:13
回答 3查看 3.5K关注 0票数 4

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

代码语言:javascript
复制
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)我还在我的PKG_CONFIG_PATH中添加了/opt/unwind/lib/pkgconfig。4)我编辑了libunwind.pc,以便两个pkg-config --cflags --libs libunwind都能得到正确的值。5)我在/etc/ld.so.conf.d/中添加了一个指向/opt/unwind/liblibunwind.conf

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

config.log的内容如下:

代码语言:javascript
复制
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设置环境变量,如下所示:

代码语言:javascript
复制
arif@khost:~/src/gperf$ CFLAGS=`pkg-config --cflags libunwind` LDFLAGS=`pkg-config --libs libunwind` ./configure

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

代码语言:javascript
复制
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也有这个奇怪的条目:

代码语言:javascript
复制
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,它会停止,并显示以下错误:

代码语言:javascript
复制
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
EN

回答 3

Stack Overflow用户

发布于 2015-11-16 22:27:33

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

票数 6
EN

Stack Overflow用户

发布于 2019-11-21 10:37:29

与bw洲的答案类似,我尝试遵循SO问题中的答案:

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

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

代码语言:javascript
复制
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;make install了。我希望这能对你有所帮助。

票数 0
EN

Stack Overflow用户

发布于 2013-08-24 23:23:12

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

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16938476

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档