Limita de 2G

Am constat ca unul din programele scrise de mine a luat-o brusc razna. In ce sens a luat-o ranza. Nu mai stergea fisierele mai mari de 2Gb pe care in mod normal conform logicii programului ar fi trebuit sa le stearga. Secventa de cod cu care verificam daca fisierul exista este :

struct stat buf;
int ka = stat ( cmd_buf, &buf );
if (ka == 0 ) {
unlink(cmd_buf);
}

Toate bune si aparent frumoase. De compilat il compilam cu
gcc -o program program.c .
Ce se intimpla de fapt ? Daca cmd_uf pointa catre un fisier mai mare de 2G atunci functia stat intorcea -1. Prin urmare nu mai functiona corect.
Cum s-a rezolvat. Dupa ce l-am injurat printre dinti pe domnul google ca nu mi-a oferit pe tava un raspuns rapid am apelat la solutia “suna un prieten” si impreuna cu Kman am descoperit rezolvarea:

gcc $(getconf LFS_CFLAGS) -o program program.c

Mai multe detalii gasiti aici