0

I am running following command:

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-unknown-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 pjsuaCreate.c

The content of pjsuaCreate.c is:

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

I am getting:

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

Im on Ubuntu and doing grep shows following:

 $ 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
singhsumit
  • 964
  • 1
  • 9
  • 26

1 Answers1

1

Since at least some of the libraries are static (archives), you might be encountering the dependency ordering problem described here.

Enclose the -l<lib1> -l<lib2> ... options between the -Wl,--start-group and -Wl,--end-group options (linker flags) respectively.

Community
  • 1
  • 1
Brett Hale
  • 21,653
  • 2
  • 61
  • 90