برطرف کردن خطا در هنگام کامپایل Qmail
شکل خطا:
> # make setup check
> ( cat warn-auto.sh; \
> echo CC=\'`head -1 conf-cc`\'; \
> echo LD=\'`head -1 conf-ld`\' \
> ) > auto-ccld.sh
> cat auto-ccld.sh make-load.sh > make-load
> chmod 755 make-load
> cat auto-ccld.sh find-systype.sh > find-systype
> chmod 755 find-systype
> ./find-systype > systype
> ( cat warn-auto.sh; ./make-load "`cat systype`" ) > load
> chmod 755 load
> cat auto-ccld.sh make-compile.sh > make-compile
> chmod 755 make-compile
> ( cat warn-auto.sh; ./make-compile "`cat systype`" ) > \
> compile
> chmod 755 compile
> ( ( ./compile tryulong32.c && ./load tryulong32 && \
> ./tryulong32 ) >/dev/null 2>&1 \
> && cat uint32.h2 || cat uint32.h1 ) > uint32.h
> rm -f tryulong32.o tryulong32
> ( ( ./compile tryvfork.c && ./load tryvfork ) >/dev/null \
> 2>&1 \
> && cat fork.h2 || cat fork.h1 ) > fork.h
> rm -f tryvfork.o tryvfork
> ./compile fastforward.c
> fastforward.c: In function âmainâ:
> fastforward.c:287: warning: return type of âmainâ is not âintâ
> ./compile slurpclose.c
> ./compile coe.c
> ./compile strset.c
> ./compile qmail.c
> ./compile auto-str.c
> auto-str.c:9: warning: conflicting types for built-in function âputsâ
> auto-str.c: In function âmainâ:
> auto-str.c:17: warning: return type of âmainâ is not âintâ
> cat auto-ccld.sh make-makelib.sh > make-makelib
> chmod 755 make-makelib
> ( cat warn-auto.sh; ./make-makelib "`cat systype`" ) > \
> makelib
> chmod 755 makelib
> ./compile substdio.c
> ./compile substdi.c
> ./compile substdo.c
> ./compile subfderr.c
> ./compile subfdouts.c
> ./compile subfdins.c
> ./compile substdio_copy.c
> ./makelib substdio.a substdio.o substdi.o substdo.o \
> subfderr.o subfdouts.o subfdins.o substdio_copy.o
> ./compile error.c
> ./compile error_str.c
> ./makelib error.a error.o error_str.o
> ./compile str_len.c
> ./compile str_diff.c
> ./compile str_diffn.c
> ./compile str_cpy.c
> ./compile str_chr.c
> ./compile str_rchr.c
> ./compile byte_chr.c
> ./compile byte_diff.c
> ./compile byte_copy.c
> ./compile byte_cr.c
> ./makelib str.a str_len.o str_diff.o str_diffn.o str_cpy.o \
> str_chr.o str_rchr.o byte_chr.o byte_diff.o byte_copy.o \
> byte_cr.o
> ./load auto-str substdio.a error.a str.a
> /usr/bin/ld: errno: TLS definition in /lib/libc.so.6 section .tbss
> mismatches non-TLS reference in substdio.a(substdo.o)
> /lib/libc.so.6: could not read symbols: Bad value
> collect2: ld returned 1 exit status
> make: *** [auto-str] Error 1
نکته: در ابتدا توجه داشته باشید که حتما باید gcc نصب شده باشد تا به این خطا برسید.
راه حل:
This is "errno.h" problem!
Please edit
conf-cc
like follows:
gcc -O2 -include /usr/include/errno.h
This will be used to compile .c files.