在Fedora上编译C ++程序

时间:2009-06-29 22:58:38

标签: c++ linux fedora

我在Fedora上编译开源C ++项目时遇到问题。当我下载并运行./configure时,我最终得到....

.
.
.
checking dynamic linker characteristics... GNU/Linux ld.so
checking how to hardcode library paths into programs... immediate
./configure: line 15513: AX_CFLAGS_WARN_ALL: command not found
./configure: line 15514: AX_CXXFLAGS_WARN_ALL: command not found
checking for flex... flex
checking lex output file root... lex.yy
checking lex library... -lfl
checking whether yytext is a pointer... yes
checking for bison... bison
./configure: line 15784: AX_PROG_GPERF: command not found
checking trace option enabled... no
checking for getrusage... yes
checking time profiling enabled... no
checking poll.h usability... yes
checking poll.h presence... yes
checking for poll.h... yes
checking forcing use of select... no
checking use pipes to communication between scheduler and dispatcher... no
./configure: line 16280: syntax error near unexpected token `1.39.0'
./configure: line 16280: `AX_BOOST_BASE(1.39.0)'

当我在Windows中编译等效项目时,我确实需要安装和更新Boost的项目引用。我可以看到这与boost有关,但不确定为什么我会得到语法错误。

还有一些需要注意的事项,configure和configure.ac中的原始源代码引用了具有相同编译错误的boost 1.3.5(在错误消息中显然为1.3.5)。

我最近安装了boost 1.3.9并更新了源代码。还要注意,当我尝试

 yum install boost

它报告我安装了1.3.7,这是最新版本。我也在源代码中尝试了1.3.7但是我遇到了同样的问题。我只是不明白为什么我会得到语法错误!

这是configure和configre.ac中抛出错误

的代码
#BOOST
AX_BOOST_BASE(1.39.0)
AX_BOOST_THREAD

关于下一步该怎么做的任何想法都会很棒。

TIA

2 个答案:

答案 0 :(得分:0)

我认为你的'开源项目'需要更高版本的autoconf / aclocal 比安装的版本。

'AX_CFLAGS _WARN _ALL',...,'AX _BOOST _BASE',都是autoconf宏 如果您有更新版本的autoconf,将会正确扩展。

答案 1 :(得分:-1)

我可以想到发生这种情况的几个原因。 首先,“Boost”是一个非常流行的C ++编程框架。

  1. 项目有错误(编译错误)
  2. 您没有正确安装依赖项
  3. 该项目与您的发行版不兼容。存储库中的软件包可能已过时,因此它是Fedora 的最新,但不是真正最新的Boost软件包。如果是这种情况,Fedora用户会更好地说。
  4. 您的某些依赖项已损坏
  5. 您没有按照正确的说明进行操作