Custom Entrance
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$
Weak link
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$