我正在 mbedtls 发行版中编译 ssl_client1.c:
g++ -I/home/pi/dev/mbedtls/mbedtls/include \
-I/home/pi/dev/mbedtls/mbedtls/tests/include \
-I/home/pi/dev/mbedtls/mbedtls/tests/include/test \
-L/home/pi/dev/mbedtls/mbedtls/library \
ssl_client1.c \
-lmbedtls -lmbedx509 -lmbedcrypto
并且由于链接器错误而失败:
ssl_client1.c:(.text+0x158): undefined reference to `mbedtls_test_cas_pem_len'
/usr/bin/ld: ssl_client1.c:(.text+0x15c): undefined reference to `mbedtls_test_cas_pem_len'
/usr/bin/ld: ssl_client1.c:(.text+0x16c): undefined reference to `mbedtls_test_cas_pem'
/usr/bin/ld: ssl_client1.c:(.text+0x170): undefined reference to `mbedtls_test_cas_pem'
但是没有可链接的“测试”库。它们在
/home/pi/dev/mbedtls/mbedtls/tests/include/test/tests.h
中定义,并且可以正确编译,但链接器无法使用这些符号。 MBEDTLS_PEM_PARSE_C
已定义。
结果我需要更多文件,因为它使用测试:
cd /home/pi/dev/mbedtls/ssl_client1
cp /home/pi/dev/mbedtls/mbedtls/tests/src/certs.c .
还有更多包括路径:
g++ -o ssl_client \
-I/home/pi/dev/mbedtls/mbedtls/tests/src \
-I/home/pi/dev/mbedtls/mbedtls/library \
-I/home/pi/dev/mbedtls/mbedtls/include \
-I/home/pi/dev/mbedtls/mbedtls/tests/include \
-I/home/pi/dev/mbedtls/mbedtls/tests/include/test \
-L/home/pi/dev/mbedtls/mbedtls/library \
-L/home/pi/dev/mbedtls/mbedtls/tests \
ssl_client1.c certs.c \
-lmbedtls -lmbedx509 -lmbedcrypto