From 565da568de6a0da883a923a540fa5d4af6927d09 Mon Sep 17 00:00:00 2001 From: Kolan Sh Date: Mon, 21 May 2012 18:58:30 +0400 Subject: [PATCH] static/shared_lib example added --- c/shared_lib/build.sh | 20 ++++++++++++++++++++ c/shared_lib/main.c | 15 +++++++++++++++ c/shared_lib/mean.c | 5 +++++ c/shared_lib/mean.h | 1 + 4 files changed, 41 insertions(+) create mode 100755 c/shared_lib/build.sh create mode 100644 c/shared_lib/main.c create mode 100644 c/shared_lib/mean.c create mode 100644 c/shared_lib/mean.h diff --git a/c/shared_lib/build.sh b/c/shared_lib/build.sh new file mode 100755 index 0000000..e34f4a0 --- /dev/null +++ b/c/shared_lib/build.sh @@ -0,0 +1,20 @@ +#!/bin/sh + +CC=cc +LIBNAME=mean +LIBREV=1 +LIBVER=1.0.0 +TEST=main +rm *.out *.o *.a *.0 *.1 ${TEST}_* *.so &>/dev/null +# --- dynamic --- +$CC -c -fPIC $LIBNAME.c -o $LIBNAME.o +$CC -shared -Wl,-soname,lib${LIBNAME}.so.${LIBREV} -o lib${LIBNAME}.so.$LIBVER $LIBNAME.o +ldconfig -n . +ln -s lib${LIBNAME}.so.${LIBREV} lib${LIBNAME}.so +$CC $TEST.c -L. -l${LIBNAME} -o ${TEST}_dynamic +# --- static --- +ar rcs lib${LIBNAME}.a $LIBNAME.o +$CC $TEST.c -static -L. -l${LIBNAME} -o ${TEST}_static + +# --- run dynamic --- +LD_LIBRARY_PATH=. ./main_dynamic diff --git a/c/shared_lib/main.c b/c/shared_lib/main.c new file mode 100644 index 0000000..08f4ca7 --- /dev/null +++ b/c/shared_lib/main.c @@ -0,0 +1,15 @@ +#include +#include "mean.h" + +int main(int argc, char* argv[]) { + + double v1, v2, m; + v1 = 5.2; + v2 = 7.9; + + m = mean(v1, v2); + + printf("The mean of %3.2f and %3.2f is %3.2f\n", v1, v2, m); + + return 0; +} diff --git a/c/shared_lib/mean.c b/c/shared_lib/mean.c new file mode 100644 index 0000000..dee9b7c --- /dev/null +++ b/c/shared_lib/mean.c @@ -0,0 +1,5 @@ +//#include + +double mean(double a, double b) { + return (a+b) / 2; +} diff --git a/c/shared_lib/mean.h b/c/shared_lib/mean.h new file mode 100644 index 0000000..0822889 --- /dev/null +++ b/c/shared_lib/mean.h @@ -0,0 +1 @@ +double mean(double, double);