自定义入口
- libhello.c
- #include <stdio.h>
- void
- my_start(void)
- {
- printf("my_start\n");
- }
- void
- hello(void)
- {
- printf("Hello, World!\n");
- }
- main.c
- extern void hello(void);
- int
- main(void)
- {
- hello();
- return 0;
- }
- haidragondeMacBook-Air:2-8 haidragon$ cd ../2-9
- haidragondeMacBook-Air:2-9 haidragon$ ls
- libhello.c main.c
- haidragondeMacBook-Air:2-9 haidragon$ gcc -c main.c libhello.c
- haidragondeMacBook-Air:2-9 haidragon$ ls
- libhello.c libhello.o main.c main.o
- haidragondeMacBook-Air:2-9 haidragon$ gcc -dynamiclib -o libhello.dylib -install_name libhello.dylib -init _my_start libhello.o
- haidragondeMacBook-Air:2-9 haidragon$ ls
- libhello.c libhello.dylib libhello.o main.c main.o
- haidragondeMacBook-Air:2-9 haidragon$ gcc -o main.dynamic main.o -L. -lhello
- haidragondeMacBook-Air:2-9 haidragon$ ls
- libhello.c libhello.dylib libhello.o main.c main.dynamic main.o
- haidragondeMacBook-Air:2-9 haidragon$ ./main.dynamic
- my_start
- Hello, World!
- haidragondeMacBook-Air:2-9 haidragon$
弱链接
- libweakfunc.c
- #include <stdio.h>
- void
- weakfunc(void)
- {
- puts("I am a weak function.");
- }
- main.c
- #include <stdio.h>
- extern void weakfunc(void) __attribute__((weak_import));
- int
- main(void)
- {
- if (weakfunc)
- weakfunc();
- else
- puts("Weak function not found.");
- return 0;
- }
- haidragondeMacBook-Air:2-9 haidragon$ cd ../2-10
- haidragondeMacBook-Air:2-10 haidragon$ ls
- libweakfunc.c main.c
- haidragondeMacBook-Air:2-10 haidragon$ gcc -c libweakfunc.c
- haidragondeMacBook-Air:2-10 haidragon$ gcc -dynamiclib -o libweakfunc.dylib -install_name libweakfunc.dylib libweakfunc.o
- haidragondeMacBook-Air:2-10 haidragon$ ls
- libweakfunc.c libweakfunc.dylib libweakfunc.o main.c
- haidragondeMacBook-Air:2-10 haidragon$ MACOSX_DEPLOYMENT_TARGET=10.14.2 gcc -o main main.c -L. -lweakfunc
- haidragondeMacBook-Air:2-10 haidragon$ ls
- libweakfunc.c libweakfunc.o main.c
- libweakfunc.dylib main
- haidragondeMacBook-Air:2-10 haidragon$ ./main
- I am a weak function.
- haidragondeMacBook-Air:2-10 haidragon$ rm ./libweakfunc.dylib
- haidragondeMacBook-Air:2-10 haidragon$ ls
- libweakfunc.c libweakfunc.o main main.c
- haidragondeMacBook-Air:2-10 haidragon$ ./main
- Weak function not found.
- haidragondeMacBook-Air:2-10 haidragon$
来源: http://www.bubuko.com/infodetail-3109619.html