Я пытаюсь связать библиотеки Mathlink в Mathematica. Я использую ОС x86_64-suse-linux, но когда я проверяю $ SystemID в Mathematica, он говорит мне, что я использую «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-битную систему? Если да, что мне делать?