2

SRTP ライブラリでアスタリスクをコンパイルしたいのですが、アスタリスク コードを構成すると、次のエラーが発生します。

checking for the ability of -lsrtp to be linked in a shared object... no
configure: WARNING: ***
configure: WARNING: *** libsrtp could not be linked as a shared object.
configure: WARNING: *** Try compiling libsrtp manually. Configure libsrtp
configure: WARNING: *** with ./configure CFLAGS=-fPIC --prefix=/usr
configure: WARNING: *** replacing /usr with the prefix of your choice.
configure: WARNING: *** After re-installing libsrtp
configure: WARNING: *** configure script.
configure: WARNING: ***
configure: WARNING: *** If you do not need SRTP support re-run configure
configure: WARNING: *** with the --without-srtp option.

また、これはこのルールをチェックするコードです:

if test "$PBX_SRTP" = "1";

then

    saved_libs="${LIBS}"
    saved_ldflags="${LDFLAGS}"
    LIBS="${LIBS} -lsrtp"
    LDFLAGS="${LDFLAGS} -shared -fPIC"
    AC_MSG_CHECKING(for the ability of -lsrtp to be linked in a shared object)
    AC_LINK_IFELSE(
    [
        AC_LANG_PROGRAM(
            [#include <srtp/srtp.h>],
            [srtp_init();]
        )
    ],

    [ AC_MSG_RESULT(yes) ],
    [
        AC_MSG_RESULT(no)
        AC_MSG_NOTICE(***)
        AC_MSG_NOTICE(*** libsrtp could not be linked as a shared object)
        AC_MSG_NOTICE(*** try compiling libsrtp manually and configuring with)
        AC_MSG_NOTICE(*** ./configure CFLAGS=-fPIC --prefix=/usr)
        AC_MSG_NOTICE(*** replacing /usr with the prefix of your choice)
        exit 1
    ]
    )
    LIBS="${saved_libs}"
    LDFLAGS="${saved_ldflags}"
fi

コミットの詳細: https://reviewboard.asterisk.org/r/857/diff/

libsrtp コードをコンパイルするためにいくつかのプレフィックスを試しましたが、同じ結果が得られました。なにか提案を?

4

3 に答える 3

6

SRTP フォルダー内:

make uninstall
make clean
./configure CFLAGS=-fPIC --prefix=/usr/local/lib
make
make runtest
make install

アスタリスクフォルダー内:

 cd ../../asterisk/asterisk-11.3.0/
./configure --with-srtp=/usr/local/lib

これは私のために働いた

于 2013-04-18T01:56:28.893 に答える
6

libsrtp のコードは共有ライブラリのように再配置可能である必要があるため、libsrtp とリンクできないという警告が表示されます。libsrtp を静的ライブラリとしてコンパイルしているようです。 libsrtpを使用:

./configure CFLAGS=-fPIC

ここでも試してみましたが、うまくいきました.libsrtpを構築するときにデフォルトのプレフィックス/use/local/libを使用したことに注意してください

./configure --with-srtp=/usr/local/lib
checking for srtp_init in -lsrtp... yes
checking srtp/srtp.h usability... yes
checking srtp/srtp.h presence... yes
checking for srtp/srtp.h... yes
checking for the ability of -lsrtp to be linked in a shared object... yes
于 2012-10-08T15:51:05.153 に答える
1

単純な呼び出しをコンパイル可能にするためのビルド スクリプト チェック。srtp_init()これを有効にするには<srtp>、インクルード ファイルのパスに含まれるフォルダーと.a、リンカーのパスに作成されたライブラリが必要です。したがって、作成後libsrtp、プレフィックスをリンカーパスに入れます

于 2012-10-03T18:54:04.250 に答える