首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >linux上的SymbolicC++错误

linux上的SymbolicC++错误
EN

Stack Overflow用户
提问于 2016-02-19 17:03:52
回答 1查看 608关注 0票数 1

我正在Ubuntu15.10上尝试从SymbolicC++3-3.35-ac.tar安装SymbolicC++。我做了一个./配置、make、sudo make安装,没有错误。

我尝试用g++ test1.cpp -lsymbolicc++编译以下内容

代码语言:javascript
复制
#include <iostream>
#include "symbolicc++.h" 
using namespace std;

int main(void)
{
  Symbolic x("x");
  cout << integrate(x+1, x) <<endl;       // => 1/2*x^(2)+x
  Symbolic y("y");
  cout << df(y, x) << endl;               // => 0
  cout << df(y[x], x) << endl;            // => df(y[x],x)
  cout << df(exp(cos(y[x])), x) << endl ; 
                             // => -sin(y[x])*df(y[x],x)*e^cos(y[x])
  return 0;
}

这段代码来自维基百科在SymbolicC++上的文章

我得到以下错误:

代码语言:javascript
复制
doug@doug-Z170X-UD5:~/books_computerAlgebraSys$ g++ test1.cpp -lsymbolicc++
/usr/local/lib/libsymbolicc++.so: undefined reference to `Number<double>::Number(double const&)'
/usr/local/lib/libsymbolicc++.so: undefined reference to `Number<int>::Number(int const&)'
collect2: error: ld returned 1 exit status
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-19 17:39:45

尝试在g++命令行中添加"-fno-elide-constructors“:

代码语言:javascript
复制
g++ test1.cpp -lsymbolicc++ -fno-elide-constructors

来自项目主页http://issc.uj.ac.za/symbolic/symbolic.html

在64位上使用GCC的SymbolicC++用户可能需要使用-fno-elide-constructors标志。

编辑:但这似乎更适用于仅头版本的库(有两个版本,标头版本和Autoconf库版本)。但是我尝试使用您的示例和AC库,对我来说,即使没有“-fno-elide”(Ubuntu14.04 64位,g++ 4.8.4),它也能很好地构建和工作。

编辑2:要总结一下,似乎库autoconf版本由于某种原因不能在每台机器上工作。对于只使用标头的库,-fno-elide-constructors标志需要与64位一起使用,-I选项用于指向标头位置(在此库是解压缩的):

代码语言:javascript
复制
g++ test1.cpp -fno-elide-constructors -I<path_to_headers>
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35510776

复制
相关文章

相似问题

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