Grešiš, ovaj, silno grešiš sinko :o))
Svi BSD-ovi već neko duže vreme koriste ELF binary format. Kucaj uostalom file /bin/sh /kernel. ELF je skraćenica od Executable and Linkable Format.
FreeBSD u principu ne pravi razliku između Linux, FreeBSD, Solaris ili bilo kog drugog ELF fajla -- svi imaju isti magic number. Kad startuješ neki binary, ELF loader traži u comment sekciji ELF headera jedan poseban broj, koji se naziva "brand" i koji mu govori kakav je to binary. Podržani tipovi su
FreeBSD(9) Linux(3) Solaris(6) SVR4(0)
Ako brand nije postavljen, može se postaviti komandom brandelf(1), npr
Code:
brandelf -t Linux mojprogram
Na osnovu ovog broja ELF loader ``podesi'' proces tako da njegovi sistemski pozivi idu kroz odgovarajući ABI mehanizam. Te razlike u pozivu funkcija su uglavnom minorne, jer Linux i FreeBSD imaju isti set sistemskih poziva, pa su performanse praktično identične kao da se program startuje pod Linux kernelom...
ELF format je u principu i smišljen kao portabilni format objektnih fajlova, da bi korisnici jednog operativnog sistema mogli da pokrenu na drugim sistemima koji trče na 32-bitnoj Intel arhitekturi. Dovoljno je samo da bude učitan odgovarajući iBCS (Intel Binary Compatibility Specification) kernel modul.
Evo vam uostalom kompletna specifikacija ELF formata
ovde, pa čitajte ;o)...
int rand(void);
Those who do not understand Unix are condemned to reinvent it, poorly.
Upali lampicu — koristi Jabber!