linux 上的 SymbolicC++ 错误
SymbolicC++ error on linux
我正在尝试在 Ubuntu 15.10 上从 SymbolicC++3-3.35-ac.tar 安装 SymbolicC++。我做了 ./configure, make, sudo make install 没有错误。
我尝试用 g++ test1.cpp -lsymbolicc++
编译以下内容:
#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++ 的文章
我收到以下错误:
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
尝试在 g++ 命令行中添加“-fno-elide-constructors”:
g++ test1.cpp -lsymbolicc++ -fno-elide-constructors
来自项目主页http://issc.uj.ac.za/symbolic/symbolic.html:
Users of SymbolicC++ with GCC on 64-bit may need to use the -fno-elide-constructors flag.
Edit:但这似乎更适用于 header-only 版本的库(有两个版本,header-only 和 Autoconf 库版本).但我尝试了您的示例和 AC 库,对我来说,即使没有“-fno-elide-constructors”(Ubuntu 14.04 64 位,g++ 4.8.4),它也能正常构建和工作。
编辑 2:总而言之,出于某种原因,库 autoconf 版本似乎无法在每台机器上运行。对于header-only库,-fno-elide-constructors
标志需要与64位一起使用,-I
选项指向headers位置(解包库的位置) :
g++ test1.cpp -fno-elide-constructors -I<path_to_headers>
我正在尝试在 Ubuntu 15.10 上从 SymbolicC++3-3.35-ac.tar 安装 SymbolicC++。我做了 ./configure, make, sudo make install 没有错误。
我尝试用 g++ test1.cpp -lsymbolicc++
编译以下内容:
#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++ 的文章
我收到以下错误:
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
尝试在 g++ 命令行中添加“-fno-elide-constructors”:
g++ test1.cpp -lsymbolicc++ -fno-elide-constructors
来自项目主页http://issc.uj.ac.za/symbolic/symbolic.html:
Users of SymbolicC++ with GCC on 64-bit may need to use the -fno-elide-constructors flag.
Edit:但这似乎更适用于 header-only 版本的库(有两个版本,header-only 和 Autoconf 库版本).但我尝试了您的示例和 AC 库,对我来说,即使没有“-fno-elide-constructors”(Ubuntu 14.04 64 位,g++ 4.8.4),它也能正常构建和工作。
编辑 2:总而言之,出于某种原因,库 autoconf 版本似乎无法在每台机器上运行。对于header-only库,-fno-elide-constructors
标志需要与64位一起使用,-I
选项指向headers位置(解包库的位置) :
g++ test1.cpp -fno-elide-constructors -I<path_to_headers>