неопределенная ссылка при связывании с использованием pjsip

Я выполняю следующую команду:

gcc -DPJ_AUTOCONF = 1 -fPIC -DPJ_IS_BIG_ENDIAN = 0 -DPJ_IS_LITTLE_ENDIAN = 1 -I / usr / local / include -L / usr / local / lib -lpjsua-x86_64-unknown-linux-gnu -lpjsip-ua-x86_64 linux-gnu -lpjsip-simple-x86_64-unknown-linux-gnu -lpjsip-x86_64-unknown-linux-gnu -lpjmedia-codec-x86_64-unknown-linux-gnu -lpjmedia-videodev-x86_64-unknown-linux-gnu - lpjmedia-x86_64-unknown-linux-gnu -lpjmedia-audiodev-x86_64-unknown-linux-gnu -lpjnath-x86_64-unknown-linux-gnu -lpjlib-util-x86_64-unknown-linux-gnu -lresample-x86_64-unknown- linux-gnu -lmilenage-x86_64-unknown-linux-gnu -lsrtp-x86_64-unknown-linux-gnu -lgsmcodec-x86_64-unknown-linux-gnu -lspeex-x86_64-unknown-linux-gnu -lilbccodec-x86_64-unknown- linux-gnu -lg7221codec-x86_64-unknown-linux-gnu -lportaudio-x86_64-unknown-linux-gnu -lpj-x86_64-unknown-linux-gnu -lm -lnsl -lrt -lpthread -lcrypto -lssl pcsuaCreate.

Содержимое pjsuaCreate.c:

 #include <pjsua-lib/pjsua.h>
 int main(int argc, char *argv[])
 {
    pj_status_t status = pjsua_create();
    return 0;
 }

Я получаю:

 /tmp/cc7U0i1Q.o: In function `main': pjsuaCreate.c:(.text+0x10): undefined reference to `pjsua_create'
 collect2: ld returned 1 exit status

Я на Ubuntu и выполняю команду grep, которая показывает следующее:

 $ grep -r "pjsua_create" /usr/local/lib/

   Binary file /usr/local/lib/python2.7/dist-packages/_pjsua.so matches
   Binary file /usr/local/lib/libpjsua-x86_64-unknown-linux-gnu.a matches

person singhsumit    schedule 27.01.2014    source источник


Ответы (1)


Поскольку по крайней мере некоторые библиотеки статичны (архивы), вы можете столкнуться с проблемой упорядочения зависимостей, описанной здесь.

Заключите параметры -l<lib1> -l<lib2> ... между параметрами -Wl,--start-group и -Wl,--end-group (флаги компоновщика) соответственно.

person Brett Hale    schedule 27.01.2014