进一步阅读

进一步阅读

嗨,我正在尝试安装 tcpserver

http://cr.yp.to/ucspi-tcp/install.html

但是当运行 make 命令时我收到错误

./compile uint32_unpack.c
./makelib byte.a byte_chr.o byte_copy.o byte_cr.o \
        byte_diff.o byte_rchr.o byte_zero.o case_diffb.o \
        case_diffs.o fmt_ulong.o ip4_fmt.o ip4_scan.o scan_ulong.o \
        str_chr.o str_diff.o str_len.o str_start.o uint16_pack.o \
        uint16_unpack.o uint32_pack.o uint32_unpack.o
( ( ./compile trylsock.c && \
        ./load trylsock -lsocket -lnsl ) >/dev/null 2>&1 \
        && echo -lsocket -lnsl || exit 0 ) > socket.lib
rm -f trylsock.o trylsock
./load tcpserver rules.o remoteinfo.o timeoutconn.o cdb.a \
        dns.a time.a unix.a byte.a  `cat socket.lib`
/usr/bin/ld: errno: TLS definition in /lib64/libc.so.6 section .tbss mismatches non-TLS reference in tcpserver.o
/lib64/libc.so.6: could not read symbols: Bad value
collect2: ld returned 1 exit status
make: *** [tcpserver] Error 1
[root@DS-899 ucspi-tcp-0.88]# make setup check
./load tcpserver rules.o remoteinfo.o timeoutconn.o cdb.a \
        dns.a time.a unix.a byte.a  `cat socket.lib`
/usr/bin/ld: errno: TLS definition in /lib64/libc.so.6 section .tbss mismatches non-TLS reference in tcpserver.o
/lib64/libc.so.6: could not read symbols: Bad value
collect2: ld returned 1 exit status
make: *** [tcpserver] Error 1
[root@DS-899 ucspi-tcp-0.88]# sudo make
./load tcpserver rules.o remoteinfo.o timeoutconn.o cdb.a \
        dns.a time.a unix.a byte.a  `cat socket.lib`
/usr/bin/ld: errno: TLS definition in /lib64/libc.so.6 section .tbss mismatches non-TLS reference in tcpserver.o
/lib64/libc.so.6: could not read symbols: Bad value
collect2: ld returned 1 exit status
make: *** [tcpserver] Error 1

我不明白出了什么问题,该怎么办?

答案1

这是一个古老且众所周知的问题。 Daniel J. Bernstein 的程序显式声明了一个名为 的全局整数errno。这实际上并不可移植,也不符合标准 C 语言(甚至是 1989 年标准)的要求,并且会导致类似这样或更糟的结果。

在世纪之交,在软件本身发布后不久,修复他所有软件的第三方补丁被广泛发布(因为人们几乎立即遇到了这个问题)。

这些补丁是由为各种操作系统打包这些工具的人员合并的。同样,我从一开始就将此类更正合并到 djbwares 包中。

进一步阅读

相关内容