• 締切済み

Xerces 2.0.0 のg++(4.4.7対応

The Apache Xerces 2.0.0のソースを本家サイトの以下から入手し、コンパイルを実施していますが、コンパイルエラーとなってしまいます。 コンパイラは、g++(gcc version 4.4.7)なのですが、対応していないのでしょうか。 <https://archive.apache.org/dist/xml/xerces-c/> 素人ながら少し調べる限り、iostream.hのインクルードに失敗しているようです。 エラーのでているソースのiostream.hのインクルードの書き方は古い書き方(C準拠)で、g++4.4.7のコンパイラに対応していないようです。 対応した書き方は、<iostream>と.hを書かないようです。 実際、環境にあるのは、/usr/include/c++/4.4.4/iostreamでした。 バージョンが4.4.4の理由は不明ですが… Xercesをコンパイルしようとしていますが、C++未経験です。 質問にあたり、提示が必要な情報が不足している場合は教えて頂けますと幸いです。 ■OS Redhat ES 6.6(カーネル:2.6.32-504.3.3.el6.x86_64) ■CPU Intel(R) Xeon(R) CPU E5-2637 v4 @ 3.50GHz ■C++コンパイラ g++ -vコマンドで表示すると以下のバージョンが表示されます。 gcc version 4.4.7 20120313 (Red hat 4.4.7-11) (GCC) ■コンパイルコマンド 説明の便宜上、コンパイルに関係のないpwd等のパスが分かる操作も含めています。 [root@xxxxx test]# pwd /usr/local/test [root@xxxxx test]# ls xerces-c-src2_0_0.tar.gz [root@xxxxx test]# tar xvzf xerces-c-src2_0_0.tar.gz [root@xxxxx test]# cd ./xerces-c-src2_0_0/src/xercesc [root@xxxxx test]# cd ./xerces-c-src2_0_0/src/xercesc [root@xxxxx test]# pwd /usr/local/test/xerces-c-src2_0_0/src/xercesc [root@xxxxx xercesc]# export XERCESCROOT=/usr/local/test/xerces-c-src2_0_0 [root@xxxxx xercesc]# autoconf [root@xxxxx xercesc]# ./runConfigure -plinux -cgcc -xg++ -minmem -nsocket -tnative -rpth ■コンパイルエラー コンパイルエラー部分と直前の関係がありそうなメッセージ部分を抜粋します。 make -C framework make[1]: ディレクトリ `/usr/local/test/xerces-c-src2_0_0/src/xercesc/framework' に入ります mkdir -p /usr/local/test/xerces-c-src2_0_0/include/xercesc/framework cp -fp LocalFileInputSource.hpp LocalFileFormatTarget.hpp MemBufInputSource.hpp MemBufFormatTarget.hpp StdInInputSource.hpp StdOutFormatTarget.hpp URLInputSource.hpp Wrapper4DOMInputSource.hpp Wrapper4InputSource.hpp XMLAttDef.hpp XMLAttDefList.hpp XMLAttr.hpp XMLBuffer.hpp XMLBufferMgr.hpp XMLContentModel.hpp XMLDocumentHandler.hpp XMLElementDecl.hpp XMLEntityDecl.hpp XMLEntityHandler.hpp XMLErrorCodes.hpp XMLErrorReporter.hpp XMLFormatter.hpp XMLNotationDecl.hpp XMLPScanToken.hpp XMLRecognizer.hpp XMLRefInfo.hpp XMLValidator.hpp XMLValidityCodes.hpp /usr/local/test/xerces-c-src2_0_0/include/xercesc/framework (省略) g++ rget.o StdOutFormatTarget.cpp StdOutFormatTarget.cpp:66:22: error: iostream.h: そのようなファイルやディレクトリはありません StdOutFormatTarget.cpp: In member function ‘virtual void StdOutFormatTarget::writeChars(const XMLByte*, unsigned int, XMLFormatter*)’: StdOutFormatTarget.cpp:83: error: ‘cout’ was not declared in this scope make[1]: *** [StdOutFormatTarget.o] エラー 1 make[1]: ディレクトリ `/usr/local/test/xerces-c-src2_0_0/src/xercesc/framework' から出ます make: *** [Framework] エラー 2

みんなの回答

  • trapezium
  • ベストアンサー率62% (276/442)
回答No.1

> xerces-c-src2_0_0.tar.gz わざわざ古いバージョンを試す理由は? より新しめのバージョンではどうか? 2002,3 年のリリースだとすると、コンパイラに限らず依存ライブラリ等も、相応に古いもの用意する必要がある気がします。

関連するQ&A

  • gccを使ってのリンク時のライブラリの指定法

    gccを使って、c++の勉強を始めようとしています。 hello.cpp(どこにでもある一行のプログラム)のコンパイルはできましたが、リンクができません。 私の機械では iostream は /usr/include/c++/3.3.2 にあります。( iostream.hは /usr/include/c++/3.3.2/backward にあります。) また、makefileにこの情報を書くには、どのように書けばよいのでしょうか。

  • cygwinでのboost

    cygwin上でboostを用いたいんですが、うまくいきません。 test.cppで、#include<boost/ramdom.hpp>としており、 コマンドを、 $ g++ -I"C:\cygwin\usr\include\boost-1_33_1" test.cpp とすると boost/ramdom.hpp: No such file or directory となってしまいます。 ramdomがboost-1_33_1の中にあるのは確認してます。 いろいろ調べてみたんですが上手くいきません。 よろしくお願いします。

  • Cygwin boost

    Windows XP sp2 + Cygwin の C++ で正規表現を使いたく setup.exe で boost をインストールし、以下のコードをコンパイル($g++ regextest.cpp) したのですがエラーが出てしまいました。 コード: #include <boost/regex.hpp> #include <iostream> using namespace std; int main () { string str("Free Programming For Windows."); boost::regex reg("Free.+Windows\\."); if (boost::regex_match(str, reg)) { cout << "===> Matched." << endl; } else { cout << "===> Not matched." << endl; } return 0; } エラー: regextest.cpp:1:27: boost/regex.hpp: No such file or directory パスが通っていないようなのですが、どうしたらよいか分かりません。アドバイスいただけたら嬉しいです。 usr/include/boost-1_33_1 に boost/regex.hpp は確認できました。

  • xpressive.hpp をオープンできない

    現在、code gear c++ builder 2009 でboostに関するプログラムを勉強してます。 正規表現のプログラムをやってみたくて、インクルードファイルとして、 #include <boost/xpressive/xpressive.hpp> こちらを宣言したのですが、次のようなエラーが出てきました。 [BCC32 エラー] test_boost.cpp(12): E2209 インクルード ファイル 'boost/xpressive/xpressive.hpp' をオープンできない [BCC32 エラー] test_boost.cpp(14): E2316 'xpressive' は 'boost' のメンバではない [BCC32 エラー] test_boost.cpp(14): E2282 名前空間名が必要 このようなエラーが出てくるのですが、これを解決する方法はないでしょうか? どうぞ、ご教授の程よろしくお願い致します。

  • makeで出るエラーが解決出来ません

    centOS5.3にsqliteを入れようと思い、 http://d.hatena.ne.jp/sotarok/20080607/php_5_with_sqlite こちらを参考にインストールしてみたんですが、 「make」 でエラーとなり、インストールが出来ません・・・。 エラー内容は・・・ /bin/sh /usr/local/src/php-5.2.10/ext/sqlite/libtool --mode=compile gcc -I/usr/local/src/php-5.2.10/ext/sqlite/libsqlite/src -I./libsqlite/src -I/usr/include/php/ext -I. -I/usr/local/src/php-5.2.10/ext/sqlite -DPHP_ATOM_INC -I/usr/local/src/php-5.2.10/ext/sqlite/include -I/usr/local/src/php-5.2.10/ext/sqlite/main -I/usr/local/src/php-5.2.10/ext/sqlite -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -DHAVE_CONFIG_H -g -O2 -c /usr/local/src/php-5.2.10/ext/sqlite/sqlite.c -o sqlite.lo mkdir .libs gcc -I/usr/local/src/php-5.2.10/ext/sqlite/libsqlite/src -I./libsqlite/src -I/usr/include/php/ext -I. -I/usr/local/src/php-5.2.10/ext/sqlite -DPHP_ATOM_INC -I/usr/local/src/php-5.2.10/ext/sqlite/include -I/usr/local/src/php-5.2.10/ext/sqlite/main -I/usr/local/src/php-5.2.10/ext/sqlite -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -DHAVE_CONFIG_H -g -O2 -c /usr/local/src/php-5.2.10/ext/sqlite/sqlite.c -fPIC -DPIC -o .libs/sqlite.o /usr/local/src/php-5.2.10/ext/sqlite/sqlite.c:211:65: error: macro "ZEND_ME_MAPPING" passed 4 arguments, but takes just 3 /usr/local/src/php-5.2.10/ext/sqlite/sqlite.c:213:60: error: macro "ZEND_ME_MAPPING" passed 4 arguments, but takes just 3 /usr/local/src/php-5.2.10/ext/sqlite/sqlite.c:211: error: 'ZEND_ME_MAPPING' undeclared here (not in a function) /usr/local/src/php-5.2.10/ext/sqlite/sqlite.c:213: error: expected '}' before 'ZEND_ME_MAPPING' /usr/local/src/php-5.2.10/ext/sqlite/sqlite.c:214:64: error: macro "ZEND_ME_MAPPING" passed 4 arguments, but takes just 3 ~略~ /usr/local/src/php-5.2.10/ext/sqlite/sqlite.c:265:45: error: macro "ZEND_ME_MAPPING" passed 4 arguments, but takes just 3 /usr/local/src/php-5.2.10/ext/sqlite/sqlite.c: In function 'sqlite_get_iterator': /usr/local/src/php-5.2.10/ext/sqlite/sqlite.c:1017: error: 'E_RECOVERABLE_ERROR' undeclared (first use in this function) /usr/local/src/php-5.2.10/ext/sqlite/sqlite.c:1017: error: (Each undeclared identifier is reported only once /usr/local/src/php-5.2.10/ext/sqlite/sqlite.c:1017: error: for each function it appears in.) /usr/local/src/php-5.2.10/ext/sqlite/sqlite.c:1017: warning: passing argument 1 of 'zend_error' makes integer from pointer without a cast /usr/local/src/php-5.2.10/ext/sqlite/sqlite.c: At top level: /usr/local/src/php-5.2.10/ext/sqlite/sqlite.c:1028: error: parameter 1 has incomplete type /usr/local/src/php-5.2.10/ext/sqlite/sqlite.c: In function 'PHP_GINIT_FUNCTION': /usr/local/src/php-5.2.10/ext/sqlite/sqlite.c:1028: error: parameter name omitted /usr/local/src/php-5.2.10/ext/sqlite/sqlite.c:1030: error: invalid type argument of '->' /usr/local/src/php-5.2.10/ext/sqlite/sqlite.c:1030: error: request for member 'assoc_case' in something not a structure or union /usr/local/src/php-5.2.10/ext/sqlite/sqlite.c: In function 'zm_startup_sqlite': /usr/local/src/php-5.2.10/ext/sqlite/sqlite.c:1051: warning: assignment from incompatible pointer type /usr/local/src/php-5.2.10/ext/sqlite/sqlite.c:1059: warning: assignment from incompatible pointer type /usr/local/src/php-5.2.10/ext/sqlite/sqlite.c: In function 'php_sqlite_fetch': /usr/local/src/php-5.2.10/ext/sqlite/sqlite.c:1463: warning: assignment makes pointer from integer without a cast make: *** [sqlite.lo] Error 1 です。 原因がお分かりの方がおられましたらご教授お願いいたします。

  • テンプレートを使用した時のbcc32とclの違い

    c++を勉強していてわからない事があり、質問させていただきたいと思います。 c++でテンプレートを使ったクラスを以下のように作りました。 //test.h template <class T> class Test { public: Test(); T m_X; }; template <class T> Test<T>::Test<T>() //<<<実際のファイルではここが10行目です { m_X = 10; } //test.cpp #include <iostream.h> #include "Test.h" void main() { Test<int> t; cout << t.m_X << endl; } これをVC++6.0のコンパイラclでは問題なくコンパイルできるのですが、Borland C++ Compailerのbcc32でコンパイルすると、「エラー E2040 Test.h 10: 宣言が正しく終了していない」とのエラーメッセージがでます。なぜ、clでは問題なくコンパイルできるのにbcc32ではコンパイルできないのでしょうか。 ご存知の方、教えていただけないでしょうか。よろしくお願いします。

  • c++ , template , ファイル分割 , 助けてください...

    //-----------------coord.h------------- template <class type> class coord { type v[3]; public: coord(void); void Show(void); }; //-----------------main.cpp------------ #include<iostream> #include"coord.h" using namespace std; int main(void) { coord<double> ob; ob.Show(); return 0; } //----------------------coord.cpp----------- #include<iostream> #include"coord.h" using namespace std; template <class type> coord<type>::coord(void) { v[0]=v[1]=v[2]=0; } template <class type> void coord<type>::Show(void) { cout << "hello" << endl; } 同一フォルダ内に上記のファイルが 3 つあります. つまり上の 3 つのファイルを分割してコンパイルさせたいです. この状態で...MS-DOSプロンプトからコンパイルします. C:\test>bcc32 -c coord.cpp Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland coord.cpp: C:\test>bcc32 -c main.cpp Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland main.cpp: C:\test>bcc32 -emain main.obj coord.obj Borland C++ 5.5.1 for Win32 Copyright (c) 1993, 2000 Borland Turbo Incremental Link 5.00 Copyright (c) 1997, 2000 Borland Error: 外部シンボル 'coord<double>::coord<double>()' が未解決(C:\USERS\TAITO\PR OG\CPP\TEST\MAIN.OBJ が参照) Error: 外部シンボル 'coord<double>::Show()' が未解決(C:\USERS\TAITO\PROG\CPP\TE ST\MAIN.OBJ が参照) すると, このようなエラー文が出てしまい 実行可能ファイルができません. コンパイラはbccです. 原因が全く分かりません. 助けてください... ちなみに, 分割せずにコンパイルすると通ります. 自分は c 言語での分割コンパイル経験はあるので それをそのまま c++ 言語でも用いているのですが, 何か変えなければならないのでしょうか?

  • c++でプログラムを作っています。初心者です。

    c++でプログラムを作っています。初心者です。 「DateUtils.hpp」というものを使いたく、 #include <DateUtils.hpp> と先頭に書いたのですが、コンパイルエラーで fatal error C1083: include ファイルを開けません。'DateUtils.hpp': No such file or directory と表示されます。 「DateUtils.hpp」というものはどこかから調達しないといけないのでしょうか? あるいは #include の書き方にでも問題があるのでしょうか… 「DateUtils.hpp」を使えるようにする方法を教えてください。 開発環境などは… ・OSはWindows Vista ・Visual C++ 2010 Expressを使用 ・dllを作成中 といった感じです。よろしくお願いします。

  • OpenCVを使ったプログラムのコンパイル

    OpenCVを使ったプログラムtest.cppを cygwin上でコンパイルしようと思いネットで調べたら 下記のように入力すればよいとのことで, 実際,下記のように入力すればコンパイルできました. g++ -I/usr/local/include/opencv test.cpp -lcxcore -lcv -lhighgui -lcvaux -lml -o test 一度入力すれば2度目以降は「↑」キーを押すことで 過去に入力したコマンドを出せるので楽にコンパイルできるのですが, cygwinを立ち上げ直した際にはもう一度入力しなければなりません. 複雑な記述が必要なコンパイルを 楽に行う方法はないでしょうか?

  • Borland C++ Compiler 5.5について(3)

    つい最近Borland C++ Compiler 5.5をインストールしたんですがコンパイルしようとすると test.cpp: エラー E2209 test.cpp 1:インクルードファイル'stdio.h'をオープンできない。 エラー E2268 test.cpp 5:未定義の関数'printf'を呼び出した(関数 main()) *** 2 errors in Compile*** と出てしまうんですがどういうことなんですか? 教えてください。

専門家に質問してみよう