在linux上编译cddplus

时间:2013-08-03 16:42:56

标签: c++ linux compilation

我希望这对于编程Q& A论坛来说不是offtopic,但我编译这个程序很麻烦,这对我来说非常重要。

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)还是还有其他我不知道的事情?

我真的很感激,如果有人能指出我正确的方向......

1 个答案:

答案 0 :(得分:1)

我已经解决了这个问题如下:

首先:在Integer.h的开头添加以下内容:

#define __STDC_LIMIT_MACROS
#include <stdint.h>` 

第二

INT_MAX替换为INT32_MAX(这是第779行和第780行),因为在stdint.h(usr / include)中,只需定义INT32_MAX而不使用INT_MAX

以上更改可能只解决了第一个问题,即INT_MAX

在此之后,您将遇到strlenmemcopy的问题,然后您可以通过将“string.h”添加到相关文件中来解决此问题,可能是Rational.h和其他人,我忘记。