LINUX.ORG.RU

Знатокам gcc и/или IDL (Interactive Data Language)


0

0

Сразу должен сказать, что я не программер, и с C у меня опыт практически нулевой, поэтому сразу сильно не пинайте, пожалуйста. Пришла мне на мою голову идея использовать сишный код в IDL (с его call_external) , исключительно ради повышения скорости вычислений. Для этого нужно создать «расшареную» библиотеку. Использую gcc и ld следующим образом:

# gcc -fPIC -c prog.c # ld -shared -o libprog.so prog.o

Но вызов какой-либо функции из prog.c выдаёт какие-то совершенно левые результаты, даже если я компилирую родные примеры от IDL. Куда копать? Я правильно выбрал опции gcc и ld?

anonymous

На случай, если это имеет значение - gcc (GCC) 4.1.2 (Gentoo 4.1.2 p1.0.1)

Linux 2.6.21-gentoo-r4 #3 PREEMPT Sun Aug 5 23:24:18 CEST 2007 i686 Mobile AMD Athlon(tm) XP 2600+ AuthenticAMD GNU/Linux

anonymous
()

Привет!

В общем случае, использовать ld напрямую не рекомендуется т.к. теряется инициализация библиотек и пр. Если строка сборки не оговорена специально, то необходимо использовать драйвер gcc.

Попробуй так: gcc -shared -fPIC prog.c -o libprog.so

giga
()
Ответ на: комментарий от giga

> использовать ld напрямую не рекомендуется

Спасибо, буду знать. В моем случае проблема была в том, что при вызове библиотеки из IDL нужно явным образом указывать тип возвращаемого параметра, а дефолтом принимается int, оттуда и заморочка.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.