В качестве примера выбрал
http://www.firststeps.ru/linux/шаг 8 Функции работы с динамическими библиотеками.
1) Создаем файл lib.c со следующим содержанием
#include <stdio.h>
double power2(double x){
return x*x;
};
double power3(double x){
return x*x*x;
};
double power4(double x){
return power2(x)*power2(x);
};
2) Создаем динамическую библиотеку libpowers.so
cd ~/ci/ci2
gcc -fPIC -c lib.c
gcc -shared lib.o -o libpowers.so
3) Создаем основную программу в файле main.c:
#include <stdio.h>
#include <dlfcn.h>
int main(int argc, char *argv[]){
void *ext_library;
double value=0;
double (*powerfunc)(double x);
ext_library=dlopen ("/home/v/ci/ci2/libpowers.so", RTLD_LAZY);
if(!ext_library){
fprintf(stderr,"dlopen() error: %s\n", dlerror());
return 1;
};
powerfunc=dlsym(ext_library, argv[1]);
value=3.0;
print("%s(%f) = %f\n",argv[1],value,(*powerfunc)(value));
dlclose(ext_library);
};
4) После команды
gcc main.c -o main -ldl
получаю:
/tmp/ccRITBb9.o: In function `main':
main.c:(.text+0xa8): undefined reference to `print'
collect2: ld returned 1 exit status
Закончилось терпение и нехватает опыта.
Подскажите, пожалуйста, что здесь не так.
Спасибо.
ps Система ОС Ubuntu 11.10 32-bit