linux脚本版本化 求解释路过都来看看哟
对于这个简单的例子我有几个问题 望大家帮助
$ cat foo.c#include <stdio.h>#ifndef VERSION_2void foo(int f) { printf("version 1 called\n");}#elsevoid foo_v1(int f) { printf("version 1 called\n");}__asm__(".symver foo_v1,foo@VERSION_1");void foo_v2(int f) { printf("version 2 called\n");}/* i.e. foo_v2 is really foo@VERSION_2 * @@ means this is the default version */__asm__(".symver foo_v2,foo@@VERSION_2");#endif$ cat 1.verVERSION_1 { global: foo; local: *;};$ cat 2.verVERSION_1 { local: *;};VERSION_2 { foo;} VERSION_1;$ cat main.c#include <stdio.h>void foo(int);int main(void) { foo(100); return 0;}$ cat Makefileall: v1 v2libfoo.so.1 : foo.c gcc -shared -fPIC -o libfoo.so.1 -Wl,--soname='libfoo.so.1' -Wl,--version-script=1.ver foo.clibfoo.so.2 : foo.c gcc -shared -fPIC -DVERSION_2 -o libfoo.so.2 -Wl,--soname='libfoo.so.2' -Wl,--version-script=2.ver foo.cv1: main.c libfoo.so.1 ln -sf libfoo.so.1 libfoo.so gcc -Wall -o v1 -lfoo -L. -Wl,-rpath=. main.cv2: main.c libfoo.so.2 ln -sf libfoo.so.2 libfoo.so gcc -Wall -o v2 -lfoo -L. -Wl,-rpath=. main.c.PHONY: cleanclean: rm -f libfoo* v1 v2$ ./v1version 1 called$ ./v2version 2 called