Mbed TLS on Solaris
When compiling Mbed TLS on Solaris, you might encounter some known issues. The default Makefile tries to manage as many systems as possible, but you must do some changes manually.
Linking error
If you run make, you may get an error during linking similar to:
$ make
...
CC pkey/dh_client.c
Undefined first referenced
symbol in file
bind ../library/libmbedtls.a(net.o)
accept ../library/libmbedtls.a(net.o)
listen ../library/libmbedtls.a(net.o)
gethostbyname ../library/libmbedtls.a(net.o)
socket ../library/libmbedtls.a(net.o)
setsockopt ../library/libmbedtls.a(net.o)
connect ../library/libmbedtls.a(net.o)
shutdown ../library/libmbedtls.a(net.o)
ld: fatal: symbol referencing errors. No output written to pkey/dh_client
collect2: ld returned 1 exit status
make[1]: *** [pkey/dh_client] Error 1
make: *** [all] Error 2
This is because under Solaris, you must to instruct GCC to include libsocket and libnsl during linking.
Define LDFLAGS to include -lsocket -lnsl when running make on Solaris 10.
Ar error
If you run make and receive the following error:
$ make
....
AR libmbedtls.a
ar: creating libmbedtls.a
RL libmbedtls.a
ar: one of [drqtpmx] must be specified
make[1]: *** [libmbedtls.a] Error 1
make: *** [all] Error 2
Workaround
Install the package SUNWbinutils, then run:
export AR=gar