5224571621

5224571621



const char *error; void *module;

simp1e_demo_function demo_function;

/* Load dynamically loaded library */

module = dlopen("libpleng_shared.so", RTLD_LAZY); if (!module) {

fprintf(stderr, "Couldn't open libpleng_shared.so: %s\n", dlerror()); exit (1);

)

/* Get symbol */

dlerror();

demo_function = dlsym(module, "hello_pl"); if (error = dlerror()) {

fprintf(stderr, "Couldn't find hello_pl: %s\n", error); exit(1);


/* Now cali the function in the DL library */

(*demo_function)();

/* Ali done, close things cleanly */

dlclose(module); return 0;


6. Zadania do samodzielnego wykonania

a)    dla przykładowego programu (składającego się z kilku plików źródłowych) podanego w rozdziale 2 instrukcji nr 4 utworzyć plik makefile, w którym zdefiniowane będą następujące główne cele (być może będzie wygodnie zdefiniować również inne cele pomocnicze):

•    lib_stat - tworzenie biblioteki statycznej

•    lib_dyn - tworzenie biblioteki współdzielonej

•    caic_stat - kompilacja programu z użyciem biblioteki statycznej

•    calc_dyn - kompilacja programu z użyciem biblioteki współdzielonej

•    all - wykonuje automatycznie cztery powyższe cele

•    clean - usuwanie z katalogu bieżącego wszystkich plików za wyjątkiem plików źródłowych Wszędzie tam, gdzie jest to możliwe używać zmiennych automatycznych programu make (takich jak na przykład: $@, $*, $<, $A, $?) oraz predefiniowanych zmiennych i nazw programów (takich jak na przykład: ar, cc, cflags, rm).

b)    utworzyć drugi plik makefile analogicznie jak w poprzednim podpunkcie, ale dla przykładów z bieżącej instrukcji.

Zadanie dla PRAWDZIWYCH PROGRAMISTÓW ! (nieobowiązkowe):

c)    program calc.c podany w rozdziale 2 instrukcji nr 4 przerobić w taki sposób, aby wykorzystywał interfejs dl.

Literatura

1. Polecenia systemowe: man ld (1), man ldd (1), man ra (1), man nm (1)

opracowali: dr inż. Artur Gramacki, dr inż. Jarosław Gramacki Język ANSI C (w systemie LINUX)

12



Wyszukiwarka

Podobne podstrony:
Po class Napis{ private: const int m_cchTest; int m_cch; char *m_pch; void lnicjNapis(const cha
{ SetSz(sz);} else m_rgch[0] = 0;} void SetSz(const char *sz){ int cchDst; cchDst =
►    Rozważmy program: #include <stdio.h> long i; void foo(const char *s, long
f20 13 j no j Function Modules: (55 Hits) Function modules Edit Goto Utilities System Help IW II z
Image16 12. .Opisz deklarację: const char *const c; stały wskaźnik do stałej zmiennej typu char. dek
Poznaj C++ w$ godziny0182 Zaawansowane referencje i wskaźniki 171 int PobierzWiek() const { return j
DSC00182 (2) Bi W polu Return type (typ zwracany) wybieramy typ void. W polu nazwa funkcji (Function
Po const Litera! &operator=(const char *pch){ strncpy(m_rgch, pch, sizeof(m_rgch)-2); m_rg ch [s
Tablica jest wskaźnikiem Kod źródłowy void ProcC(char *pchBuf) { } void ProcD() { char *pch;
Formatowane wejście int scanf(const char ♦format, ...); •    Funkcja czyta z wejścia

więcej podobnych podstron