0
我希望这不是一个编程问题的关键Q &论坛,但我有麻烦编译这个程序,这对我来说非常重要。在linux上编译cddplus
http://www.inf.ethz.ch/personal/fukudak/cdd_home/ ,并从那里最新的CDD + -077a.tar.gz ...
简单make all
(如README建议)产量:
g++ -O3 -I -I/usr/local/include -I. -DGMP -DRATIONAL -c -o cdd_r.o cdd.C
In file included from ./Rational.h:19:0,
from cddtype.h:16,
from cdd.C:38:
./Integer.h:779:28: Fehler: »INT_MAX« wurde in diesem Gültigkeitsbereich nicht definiert
./Integer.h:780:30: Fehler: »INT_MAX« wurde in diesem Gültigkeitsbereich nicht definiert
In file included from cddtype.h:16:0,
from cdd.C:38:
./Rational.h: In Funktion »std::basic_ostream<char, _Traits>& operator<<(std::basic_ostream<char, _Traits>&, const Rational&)«:
./Rational.h:1181:35: Fehler: es gibt keine Argumente für »strlen«, die von einem Templateparameter abhängen, weshalb eine Deklaration von »strlen« verfügbar sein muss [- fpermissive]
./Rational.h:1181:35: Anmerkung: (mit »-fpermissive« wird G++ den Code akzeptieren, aber die Verwendung eines nicht deklarierten Namens ist veraltet)
cdd.C: In Funktion »void DDEnumerate(std::ostream&, std::ostream&)«:
cdd.C:197:49: Warnung: veraltete Konvertierung von Zeichenkettenkonstante in »char*« [-Wwrite-strings]
cdd.C:204:55: Warnung: veraltete Konvertierung von Zeichenkettenkonstante in »char*« [-Wwrite-strings]
cdd.C:211:49: Warnung: veraltete Konvertierung von Zeichenkettenkonstante in »char*« [-Wwrite-strings]
cdd.C:219:55: Warnung: veraltete Konvertierung von Zeichenkettenkonstante in »char*« [-Wwrite-strings]
cdd.C: In Funktion »void DDRowDecomposition(std::ostream&, std::ostream&)«:
cdd.C:260:53: Warnung: veraltete Konvertierung von Zeichenkettenkonstante in »char*« [-Wwrite-strings]
cdd.C:301:47: Warnung: veraltete Konvertierung von Zeichenkettenkonstante in »char*« [-Wwrite-strings]
cdd.C:308:53: Warnung: veraltete Konvertierung von Zeichenkettenkonstante in »char*« [-Wwrite-strings]
cdd.C:315:47: Warnung: veraltete Konvertierung von Zeichenkettenkonstante in »char*« [-Wwrite-strings]
cdd.C: In Funktion »void PreProjection(std::ostream&, std::ostream&)«:
cdd.C:356:69: Warnung: veraltete Konvertierung von Zeichenkettenkonstante in »char*« [-Wwrite-strings]
cdd.C:422:49: Warnung: veraltete Konvertierung von Zeichenkettenkonstante in »char*« [-Wwrite-strings]
cdd.C:429:55: Warnung: veraltete Konvertierung von Zeichenkettenkonstante in »char*« [-Wwrite-strings]
cdd.C:436:49: Warnung: veraltete Konvertierung von Zeichenkettenkonstante in »char*« [-Wwrite-strings]
cdd.C: In Funktion »void PostAnalysisMain(std::ifstream&, std::ostream&)«:
cdd.C:522:49: Warnung: veraltete Konvertierung von Zeichenkettenkonstante in »char*« [-Wwrite-strings]
cdd.C:529:55: Warnung: veraltete Konvertierung von Zeichenkettenkonstante in »char*« [-Wwrite-strings]
cdd.C:536:49: Warnung: veraltete Konvertierung von Zeichenkettenkonstante in »char*« [-Wwrite-strings]
cdd.C:544:55: Warnung: veraltete Konvertierung von Zeichenkettenkonstante in »char*« [-Wwrite-strings]
cdd.C: In Funktion »int main(int, char**)«:
cdd.C:794:39: Warnung: veraltete Konvertierung von Zeichenkettenkonstante in »char*« [-Wwrite-strings]
cdd.C:797:56: Warnung: veraltete Konvertierung von Zeichenkettenkonstante in »char*« [-Wwrite-strings]
cdd.C:806:45: Warnung: veraltete Konvertierung von Zeichenkettenkonstante in »char*« [-Wwrite-strings]
make: *** [cdd_r.o] Fehler 1
是什么意思呢?是文件本身损坏(我高度怀疑)是我的设置错误(我正在运行Ubuntu 13.04)还是有什么我不知道?
我会很感激,如果有人能在正确的方向点我...
我的猜测是,它不是很便携的代码,它依赖于一些非标准的编译器行为。 – Thomas
它看起来像你缺少一些标题。例如,'INT_MAX'在C语言中的''中定义,在C++中定义在''中。 –
juanchopanza
是的,你可能是对的,但文件cstdint存在于我的计算机的'/ usr/include/C++/4.7/cstdint'中,这是我用来编译这个东西的编译器。所以这个问题似乎在makefile中 – wa4557