在 yocto 中使用 ssl 支持构建 pjproject 时未定义的引用

Undefined references when building pjproject with ssl support in yocto

我试图在支持 ssl 的 yocto 中交叉编译 pjproject,但在尝试构建 pjlib-test 时出错。我尝试将 openssl 包添加到我的 .bb 文件中的 DEPENDS,但没有任何变化。任何帮助将不胜感激。

tmp/work/armv7at2hf-neon-mx6ul-fslc-linux-gnueabi/pjproject/2.8-r0/pjproject-2.8/third_party/lib         -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -fuse-ld=bfd -lssl -lcrypto -fuse-ld=bfd -lssl -lcrypto
| output/pjlib-test-arm-fslc-linux-gnueabi/ssl_sock.o: In function `get_cipher_list':
| /usr/src/debug/pjproject/2.8-r0/pjproject-2.8/pjlib/src/pjlib-test/ssl_sock.c:49: undefined reference to `pj_ssl_cipher_get_availables'
| /usr/src/debug/pjproject/2.8-r0/pjproject-2.8/pjlib/src/pjlib-test/ssl_sock.c:58: undefined reference to `pj_ssl_cipher_name'
| output/pjlib-test-arm-fslc-linux-gnueabi/ssl_sock.o: In function `ssl_on_data_sent':
| /usr/src/debug/pjproject/2.8-r0/pjproject-2.8/pjlib/src/pjlib-test/ssl_sock.c:362: undefined reference to `pj_ssl_sock_get_user_data'
| /usr/src/debug/pjproject/2.8-r0/pjproject-2.8/pjlib/src/pjlib-test/ssl_sock.c:377: undefined reference to `pj_ssl_sock_send'
| /usr/src/debug/pjproject/2.8-r0/pjproject-2.8/pjlib/src/pjlib-test/ssl_sock.c:393: undefined reference to `pj_ssl_sock_close'
| output/pjlib-test-arm-fslc-linux-gnueabi/ssl_sock.o: In function `ssl_on_data_read':
| /usr/src/debug/pjproject/2.8-r0/pjproject-2.8/pjlib/src/pjlib-test/ssl_sock.c:266: undefined reference to `pj_ssl_sock_get_user_data'
| /usr/src/debug/pjproject/2.8-r0/pjproject-2.8/pjlib/src/pjlib-test/ssl_sock.c:349: undefined reference to `pj_ssl_sock_close'
| /usr/src/debug/pjproject/2.8-r0/pjproject-2.8/pjlib/src/pjlib-test/ssl_sock.c:323: undefined reference to `pj_ssl_sock_get_info'
| /usr/src/debug/pjproject/2.8-r0/pjproject-2.8/pjlib/src/pjlib-test/ssl_sock.c:296: undefined reference to `pj_ssl_sock_send'
| output/pjlib-test-arm-fslc-linux-gnueabi/ssl_sock.o: In function `dump_ssl_info':
| /usr/src/debug/pjproject/2.8-r0/pjproject-2.8/pjlib/src/pjlib-test/ssl_sock.c:93: undefined reference to `pj_ssl_cipher_name'
| output/pjlib-test-arm-fslc-linux-gnueabi/ssl_sock.o: In function `ssl_on_connect_complete':

编辑:这似乎是因为它没有检测到 openssl,我可以通过使用 --with-ssl= 标志来实现它,但我不知道将此标志指向何处,因为 yocto 在我拒绝构建时将它设置为 libssl 所在的 /usr/lib 或者如果我将它设置为 openssl 所在的 /usr/bin。

我会首先检查为什么 pjproject 配置找不到 openssl(在 linux 上不应该是火箭科学)。但是你所要求的通常可以用这样的方式来完成:

EXTRA_OECONF = "--with-ssl=${STAGING_DIR_HOST}${prefix}"

由于您没有分享您的食谱,因此无法判断这是否真的适用于您的情况。