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