我正在尝试在mathematica 中链接Mathlink 库。我使用的是 x86_64-suse-linux 操作系统,但是当我在 Mathematica 中检查 $SystemID 时,它告诉我我使用的是“Linux”而不是“Linux-x86-64”。
这是一个问题,因为如果我尝试将库链接为
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 位系统这一事实是否正确?如果是这样,我该怎么办?