libuv 1.16.0 Build on Solaris 10 (SunOS 5.10)

環境

Solaris 10 (SunOS dev-ts1 5.10 Generic_150400-26 sun4v sparc sun4v)

$ isainfo
sparcv9 sparc

gcc 3.3.2

Reading specs from /usr/local/lib/gcc-lib/sparc-sun-solaris2.10/3.3.2/specs
Configured with: ../configure –with-as=/usr/ccs/bin/as –with-ld=/usr/ccs/bin/ld –disable-nls
Thread model: posix
gcc version 3.3.2

事前工具準備

編譯

./autogen.sh

32bit:
CFLAGS="-DSUNOS_NO_IFADDRS -D__EXTENSIONS__ -D_XOPEN_SOURCE=500 -D__SUNPRO_C" ./configure

64bit:
CFLAGS="-DSUNOS_NO_IFADDRS -D__EXTENSIONS__ -D_XOPEN_SOURCE=500 -D__SUNPRO_C -m64" LDFLAGS=-m64./configure

解說:
SUNOS_NO_IFADDRS Solaris10的libsocket沒有ifaddrs.h
-D__EXTENSIONS__ -D_XOPEN_SOURCE=500似乎沒什麼用 下保險的
__SUNPRO_C to use Solaris atomic.h
builtin atomic operation caused link failed __sync_val_compare_and_swap undefined reference

修改src/unix/getaddrinfo.c 實作strnlen

修改Makefile LDFLAGS加上-lm

make -j 16

測試

make check

failed list:

安裝

make install

/usr/local/lib/libuv.a
/usr/local/include/uv.h