2013-03-14 4 views
2

Я пытаюсь вызвать внешнюю программу C. Тот же код уже работает на linux и windows, но не на солярии.
Может кто-нибудь взглянуть?
Оригинальный пример взят из http://csl.name/C-functions-from-Python/
кода C (myModule.c)python вызывает внешнюю программу C в Solaris

#include <Python.h> 

static PyObject* py_myFunction(PyObject* self, PyObject* args) 
{ 
    char *s = "Hello from C!"; 
    return Py_BuildValue("s", s); 
} 

static PyObject* py_myOtherFunction(PyObject* self, PyObject* args) 
{ 
    double x, y; 
    PyArg_ParseTuple(args, "dd", &x, &y); 
    return Py_BuildValue("d", x*y); 
} 

static PyMethodDef myModule_methods[] = { 
    {"myFunction", py_myFunction, METH_VARARGS}, 
    {"myOtherFunction", py_myOtherFunction, METH_VARARGS}, 
    {NULL, NULL} 
}; 

void initmyModule() 
{ 
    (void) Py_InitModule("myModule", myModule_methods); 
} 

Python назвав его

from myModule import * 

print "Result from myFunction:", myFunction() 
print "Result from myOtherFunction(4.0, 5.0):", myOtherFunction(4.0, 5.0) 

Компиляция на Linux (проверено на RHEL)

gcc -fPIC -shared -I/usr/include/python2.6 -lpython2.6 -o myModule.so myModule.c 

Компиляция на Windows XP под MinGW

Но я не могу заставить его работать на солярии. Я могу скомпилировать его с

gcc -fPIC -I/usr/include/python2.4 -L/usr/lib/python2.4 myModule.c -lpython2.4 -shared -o myModule.so 

но он терпит неудачу с ошибкой

from myModule import * 
ImportError: ld.so.1: python2.4: fatal: libgcc_s.so.1: open failed: No such file or directory 

Может кто-то помочь мне понять это?

 
gcc is 3.4.6 
Python is 2.4.6 
solaris 10 on x86 machine

+0

Сообщение об ошибке говорит вам, что произошло. Он искал libgcc_s.so.1 и не смог найти его. –

ответ

1

Это должно зацепить вас

pfexec rm /usr/lib/libgcc_s.so.1 
pfexec ln -s /opt/ts/gcc/3.4/lib/libgcc_s.so.1 /usr/lib/libgcc_s.so.1 
+0

Да - это решило мою проблему. Я использовал его в/usr/local/lib, а не в/usr/lib. Мне никогда не приходило в голову, что он должен быть в правильном каталоге. –

Смежные вопросы