2016-11-14 8 views
0

システム全体のlibxml2

私はIBM BlueGene/Qを設置するJUQUEENのスーパーコンピュータに物理シミュレーションのクロマスイートをコンパイルしたいです。フロントエンドはRedHat Linux 6で動作します。アーキテクチャはフロントエンドと計算ノードの両方でPowerPC 7です。フロントエンドにはIBM Power 740、計算ノードにはIBM Power A2チップが使用されています。 mpigccmpig++のようなコンパイラを使用すると、自動的に計算ノードのクロスコンパイルが行われます。システム全体のlibxml2のconfigureでソースfailesから機能していない、コンパイル

最新のバージョンのプログラムは、moduleを使用してパスにロードできます。コンパイルが必要な他の2つのライブラリには依存関係があります。私は今のところqmpで終わっています。 qdpxxlibxml2に依存しており、私は立ち往生していますこれはどこです:私のFedora 24のワークステーション上で

chroma --- qdpxx --- qmp 
       \-- libxml2 

を、私はちょうど罰金libxml2のシステム全体のインストールを使用してqdpxxをコンパイルすることができます。 RPMパッケージlibxml2libxml2-develをインストールしました。-with-libxml2=DIR引数をqdpxx/configureに指定する必要はありませんでした。スーパーコンピュータのフロントエンドで

、私はこの取得:qdpxx/config.log

+ ./configure --prefix=/homec/hbn28/hbn28e/local/ --host=powerpc64-bgq-linux --build=powerpc64-unknown-linux-gnu --enable-bgq-thread-binding --enable-openmp --enable-parallel-arch=parscalar --enable-precision=double --enable-parallel-io --enable-qdp-alignment=128 --with-qmp=/homec/hbn28/hbn28e/local/ 'CFLAGS=-O2 -finline-limit=50000 -I/usr/local/bg_soft/mpich3/include -Wall -Wpedantic -fdiagnostics-color=auto --std=c99 -fopenmp --std=gnu99' 'CXXFLAGS=-O2 -finline-limit=50000 -I/usr/local/bg_soft/mpich3/include -Wall -Wpedantic -fdiagnostics-color=auto --std=c++11 -fopenmp' LDFLAGS= LIBS= CC=/bgsys/local/gcc/4.9.3/bin/mpigcc CXX=/bgsys/local/gcc/4.9.3/bin/mpig++ 
checking for C++ compiler default output file name... a.out 
checking whether the C++ compiler works... yes 
checking whether we are cross compiling... yes 
checking for suffix of executables... 
checking for suffix of object files... o 
checking whether we are using the GNU C++ compiler... yes 
checking whether /bgsys/local/gcc/4.9.3/bin/mpig++ accepts -g... yes 
checking for powerpc64-bgq-linux-ranlib... no 
checking for ranlib... ranlib 
configure: WARNING: using cross tools not prefixed with host triplet 
checking for powerpc64-bgq-linux-ar... no 
checking for ar... ar 
checking for a BSD-compatible install... /usr/bin/install -c 
checking whether build environment is sane... yes 
checking for powerpc64-bgq-linux-strip... no 
checking for strip... strip 
checking for a thread-safe mkdir -p... /bin/mkdir -p 
checking for gawk... gawk 
checking whether make sets $(MAKE)... yes 
checking for style of include used by make... GNU 
checking dependency style of /bgsys/local/gcc/4.9.3/bin/mpig++... gcc3 
configure: Configuring QDP++ for Nd = 4 
configure: Configuring QDP++ for Nc = 3 
configure: Configuring QDP++ for Ns = 4 
configure: Configuring QDP++ Alignment size=16 
configure: Fallback to generic C routines if needed: yes 
configure: Enabling BGQ Thread Binding 
configure: Configuring for double precision 
configure: Configuring QDP++ with cb2 layout 
configure: Parscalar build! Checking for QMP 
checking for qmp-config... /homec/hbn28/hbn28e/local//bin/qmp-config 
configure: Found QMP configuration program /homec/hbn28/hbn28e/local//bin/qmp-config 
configure: QMP compile flags: -I/homec/hbn28/hbn28e/local/include 
configure: QMP linking flags: -L/homec/hbn28/hbn28e/local/lib 
configure: QMP libraries flags: -lqmp 
checking if we can compile/link of a simple QMP C++ program... yes 
Value of with_libxml2 is XX 
checking for xml2-config... /usr/bin/xml2-config 
configure: Found libxml2 configuration program 
configure: libxml2 compile flags: -I/usr/include/libxml2 
configure: libxml2 libraries flags: -lxml2 -lz -lm 
checking if we can compile/link a simple libxml2 program... no 
configure: error: Cannot compile/link a program with libxml2. 
    Use --with-libxml2=<dir> to select a working version. 

を、関連する部分はここに、このです:何/usr/lib/libxml2.soがないよう

configure:4321: checking for xml2-config 
configure:4339: found /usr/bin/xml2-config 
configure:4351: result: /usr/bin/xml2-config 
configure:4370: Found libxml2 configuration program 
configure:4374: libxml2 compile flags: -I/usr/include/libxml2 
configure:4378: libxml2 libraries flags: -lxml2 -lz -lm 
configure:4386: checking if we can compile/link a simple libxml2 program 
configure:4434: /bgsys/local/gcc/4.9.3/bin/mpig++ -o conftest -O2 -finline-limit=50000 -I/usr/local/bg_soft/mpich3/include -Wall -Wpedantic -fdiagnostics-color=auto --std=c++11 -fopenmp -I/usr/include/libxml2 conftest.cpp -lxml2 -lz -lm >&5 
conftest.cpp: In function 'int main()': 
conftest.cpp:30:16: warning: deprecated conversion from string constant to 'char*' [-Wwrite-strings] 
    char *docname="foo"; 
       ^
conftest.cpp:28:13: warning: unused variable 'argc' [-Wunused-variable] 
     int argc ; char **argv ; 
      ^
conftest.cpp:28:27: warning: unused variable 'argv' [-Wunused-variable] 
     int argc ; char **argv ; 
         ^
conftest.cpp:29:19: warning: variable 'doc' set but not used [-Wunused-but-set-variable] 
     xmlDocPtr doc; 
       ^
/usr/local/bg_soft/gcc/4.9.3/bin/../lib/gcc/powerpc64-bgq-linux/4.9.3/../../../../powerpc64-bgq-linux/bin/ld: cannot find -lxml2 
/usr/local/bg_soft/gcc/4.9.3/bin/../lib/gcc/powerpc64-bgq-linux/4.9.3/../../../../powerpc64-bgq-linux/bin/ld: cannot find -lz 
collect2: error: ld returned 1 exit status 
configure:4441: $? = 1 
configure: failed program was: 
| /* confdefs.h. */ 
| #define PACKAGE_NAME "qdp++" 
| #define PACKAGE_TARNAME "qdp--" 
| #define PACKAGE_VERSION "1.44.0" 
| #define PACKAGE_STRING "qdp++ 1.44.0" 
| #define PACKAGE_BUGREPORT "[email protected]" 
| #define PACKAGE "qdp--" 
| #define VERSION "1.44.0" 
| #define QDP_ND 4 
| #define QDP_NC 3 
| #define QDP_NS 4 
| #define QDP_AC_ALIGNMENT_SIZE 16 
| #define QDP_USE_GENERIC_OPTS 1 
| #define QDP_USE_BLUEGENEL 1 
| #define BASE_PRECISION 64 
| #define QDP_USE_CB2_LAYOUT 1 
| #define ARCH_PARSCALAR 1 
| #define QDP_USE_LIBXML2 1 
| /* end confdefs.h. */ 
| 
|   #include <libxml/xmlmemory.h> 
|  #include <libxml/parser.h> 
| 
| int 
| main() 
| { 
| 
|   int argc ; char **argv ; 
|   xmlDocPtr doc; 
|  char *docname="foo"; 
|  doc = xmlParseFile(docname); 
|   ; 
|   ; 
| 
| ; 
| return 0; 
| } 
configure:4483: result: no 
configure:4486: error: Cannot compile/link a program with libxml2. 
    Use --with-libxml2=<dir> to select a working version. 

cannot find -lxml2が鳴ります。実際、そこには存在しません。どうやら32ビット版は、奇妙なので、名前のみ64ビット版は、通常のように、名前を持ってい

/usr/include/libxml2/libxml/xpath.h 
... 
/usr/include/libxml2/libxml/xpointer.h 
/usr/lib/libxml2.so.2 
/usr/lib/libxml2.so.2.7.6 
/usr/lib64/libxml2.so 
/usr/lib64/libxml2.so.2 
/usr/lib64/libxml2.so.2.7.6 

locate libxmlを実行すると、次の興味深い行を示します。他のものを壊すことが判明し-L/usr/lib64を追加しようとすると:

+ ./configure --prefix=/homec/hbn28/hbn28e/local/ --host=powerpc64-bgq-linux --build=powerpc64-unknown-linux-gnu --enable-bgq-thread-binding --enable-openmp --enable-parallel-arch=parscalar --enable-precision=double --enable-parallel-io --enable-qdp-alignment=128 --with-qmp=/homec/hbn28/hbn28e/local/ 'CFLAGS=-O2 -finline-limit=50000 -I/usr/local/bg_soft/mpich3/include -Wall -Wpedantic -fdiagnostics-color=auto --std=c99 -fopenmp --std=gnu99' 'CXXFLAGS=-O2 -finline-limit=50000 -I/usr/local/bg_soft/mpich3/include -Wall -Wpedantic -fdiagnostics-color=auto --std=c++11 -fopenmp' LDFLAGS=-L/usr/lib64/ LIBS= CC=/bgsys/local/gcc/4.9.3/bin/mpigcc CXX=/bgsys/local/gcc/4.9.3/bin/mpig++ 
checking for C++ compiler default output file name... 
configure: error: in `/homec/hbn28/hbn28e/qdpxx': 
configure: error: C++ compiler cannot create executables 
See `config.log' for more details. 

ログファイルでは、次の言葉:

configure:2159: /bgsys/local/gcc/4.9.3/bin/mpig++ -O2 -finline-limit=50000 -I/usr/local/bg_soft/mpich3/include -Wall -Wpedantic -fdiagnostics-color=auto --std=c++11 -fopenmp -L/usr/lib64/ conftest.cpp >&5 
/usr/local/bg_soft/gcc/4.9.3/bin/../lib/gcc/powerpc64-bgq-linux/4.9.3/../../../../powerpc64-bgq-linux/lib/crt1.o: In function `_start_no_magic': 
(.text+0x58): undefined reference to `__libc_no_magic_start_main' 
/bgsys/local/gcc/4.9.3/powerpc64-bgq-linux/lib/libdl.so.2: undefined reference to `[email protected]_PRIVATE' 
collect2: error: ld returned 1 exit status 
configure:2163: $? = 1 
configure:2201: result: 
configure: failed program was: 
| /* confdefs.h. */ 
| #define PACKAGE_NAME "qdp++" 
| #define PACKAGE_TARNAME "qdp--" 
| #define PACKAGE_VERSION "1.44.0" 
| #define PACKAGE_STRING "qdp++ 1.44.0" 
| #define PACKAGE_BUGREPORT "[email protected]" 
| /* end confdefs.h. */ 
| 
| int 
| main() 
| { 
| 
| ; 
| return 0; 
| } 
configure:2207: error: in `/homec/hbn28/hbn28e/qdpxx': 
configure:2210: error: C++ compiler cannot create executables 

私がちょうどライブラリは、このような常駐させることができ、他のすべてのパスを甲斐無しているようですそれ以上何も構築されないこと。

/usr/lib/libxml2.so.2から$HOME/libxml2.soとaddling -L$HOMEからシンボリックリンクを作成しようとすると、どちらも機能しませんでした。私はシステム全体のインストールを追求停止し、Gitのリポジトリからlibxml2をインストールしようとした。この時点でのGit

からのlibxml2をコンパイルしようと

。だから私はリポジトリをクローンし、./autogen.shとタイプしました。これは失敗しました:

Checking zlib 
./configure: line 12546: syntax error near unexpected token `Z,zlib,' 
./configure: line 12546: ` PKG_CHECK_MODULES(Z,zlib,' 

そこにあるautotoolsはバージョン2.69であると主張しています。これは、大学のクラスタにインストールされている同じバージョンです(ここでも失敗します)。私のFedora 24ワークステーションでは、同じバージョンがインストールされていますが、./autogen.shが実行され、Makefileが作成されます。


私は少し失われています。 ppc64 RedHatで、またamd64 Debian大学のクラスタで失敗した場合は、x86_64 Fedoraラップトップのビルドスクリプトには、libxml2のビルドスクリプトにバグがありますか?

qdpxxconfigureスクリプトのシステム全体のインストールをlibxml2にするにはどうすればよいですか?これは、すでにxml2-configを使用して、適切なフラグを抽出ん:

configure: libxml2 compile flags: -I/usr/include/libxml2 
configure: libxml2 libraries flags: -lxml2 -lz -lm 

私のプログラムは、さらにコンパイル取得する私は何ができますか?

+0

targetを 'ppc64'または' powerpc64'に設定してみてください。これにより、自動的にコードが64ビットバイナリに構築されます。 – alvits

+3

バージョン管理されていない共有ライブラリは通常、 '* -devel'パッケージによって提供されます。これらは、バージョン管理されたライブラリへのリンクです。つまり、 'libxml2-devel。* 64'だけがインストールされています。 32ビットバージョンはインストールされていません。 – alvits

+0

'PKG_CHECK_MODULES'エラーを解決するには' pkg-config'をインストールするだけです。あらかじめ構築されたconfigureスクリプトに付属している正式なlibxml2リリースのtarballをダウンロードすることもできます。しかし、私は実際にシステムのlibxml2を最初に動作させてビルドをしようとしています。 @alvitsの提案がうまくいかない場合、symlinkを手動で作成するのはどうですか? – nwellnhof

答えて

0

ソースディレクトリ内のln -fs /usr/share/aclocal/pkg.m4 .を実行すると、configureが見つかりました。PKG_PROG_PKG_CONFIGです。しかし、まだ文法エラーがあります。再実行autoreconfは、文法エラーがなくなったconfigureファイルを作成しました。

関連する問題