mathematica で Mathlink ライブラリをリンクしようとしています。x86_64-suse-linux OS を使用していますが、Mathematica で $SystemID を確認すると、「Linux-x86-64」ではなく「Linux」を使用していると表示されます。
ライブラリを次のようにリンクしようとすると、これは問題です
g++ cpp2mma.cpp -L/usr/local/Wolfram/Mathematica/8.0/SystemFiles/Links/MathLink/DeveloperKit/Linux/CompilerAdditions/ -lML32i3 -lpthread -lstdc++ -lm -lrt
(32 ビット バージョン - Linux/ で唯一のライブラリ)
次のエラーが表示されます。
/usr/lib64/gcc/x86_64-suse-linux/4.5/../../../../x86_64-suse-linux/bin/ld: skipping incompatible
/usr/local/Wolfram/Mathematica/8.0/SystemFiles/Links/MathLink/DeveloperKit/Linux/CompilerAdditions//libML32i3.so when searching for -lML32i3
/usr/lib64/gcc/x86_64-suse-linux/4.5/../../../../x86_64-suse-linux/bin/ld: skipping incompatible
/usr/local/Wolfram/Mathematica/8.0/SystemFiles/Links/MathLink/DeveloperKit/Linux/CompilerAdditions//libML32i3.a when searching for -lML32i3
/usr/lib64/gcc/x86_64-suse-linux/4.5/../../../../x86_64-suse-linux/bin/ld: cannot find -lML32i3
collect2: ld returned 1 exit status
ただし、次のようにリンクしようとすると
g++ cpp2mma.cpp -L/usr/local/Wolfram/Mathematica/8.0/SystemFiles/Links/MathLink/DeveloperKit/Linux-x86-64/CompilerAdditions/ -lML64i3 -lpthread -lstdc++ -lm -lrt
コンパイルは問題なく実行できますが、実行しようとすると次のエラーが発生します。
./a.out: error while loading shared libraries: libML64i3.so: cannot open shared object file: No such file or directory
このファイルは、「locate libML64i3.so」を実行すると明らかに存在します。
/usr/local/Wolfram/Mathematica/8.0/SystemFiles/Libraries/Linux-x86-64/libML64i3.so
/usr/local/Wolfram/Mathematica/8.0/SystemFiles/Links/MathLink/DeveloperKit/Linux-x86-64/CompilerAdditions/libML64i3.so
問題は Mathematica が私が 32 ビットシステムを実行していないと判断したことにあると仮定して正しいでしょうか? もしそうなら、私は何をしますか?