嗨,我正在尝试安装 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 包中。
进一步阅读
- 乔纳森·德博因·波拉德 (2016)。 Daniel J. Bernstein 的软件合一。软件。
- 乔纳森·德博因·波拉德 (2003)。 ”使用现代版本的 GNU C 库时无法构建”。 Dan Bernstein 的 djbdns 的已知问题。经常给出的答案。
- 乔纳森·德博因·波拉德 (2003)。 ”使用现代版本的 GNU C 库时无法构建”。 Dan Bernstein 的 qmail 的已知问题。经常给出的答案。
- ”DJB 的实用程序:ucspi-tcp-0.88”。 从头开始超越 Linux:版本 1.0。 linuxfromscratch.org。
- 斯特凡·克拉。 ucspi-tcp-0.88 安装说明。 bytereef.org。
- https://sources.debian.org/src/ucspi-tcp/1:0.88-3.1/debian/diff/