[rtmpdump] rtmpdump build problem on Mac OS X 10.11.1 El Capitan / Xcode 7.1.1

桃源老師 xanadu6291 at dream.jp
Tue Dec 1 13:17:38 CET 2015


Hello list member,

I'm now trying to build rtmpdump under Mac OS X 10.11.1 El Capitan / Xcode 7.1.1 but yet not succeeded.

I'm trying to use GnuTLS for crypt and I'm now thinking this is succeeded.
But in making rtmpdump, I get "ld: library not found for -lgnutls" error when executing "gcc -Wall  -o rtmpdump rtmpdump.o -Llibrtmp -lrtmp -lgnutls -lhogweed -lnettle -lgmp -lz" portion.

My make command and log is as follows:

$ export TARGET ="/Users/roushi/Desktop/RTMPDump_Test"
$ make SYS=darwin CRYPTO=GNUTLS SHARED=no INC=-I${TARGET}/include

gcc -Wall  -I/Users/roushi/Desktop/RTMPDump_Test/include -DRTMPDUMP_VERSION=\"v2.4\" -DUSE_GNUTLS  -O2    -c -o rtmp.o rtmp.c
rtmp.c:277:44: warning: 'gnutls_certificate_credentials' is deprecated
      [-Wdeprecated-declarations]
  gnutls_certificate_allocate_credentials((gnutls_certificate_credential...
                                           ^
/Users/roushi/Desktop/RTMPDump_Test/include/gnutls/compat.h:95:5: note: 
      'gnutls_certificate_credentials' has been explicitly marked deprecated
      here
    gnutls_certificate_credentials _GNUTLS_GCC_ATTR_DEPRECATED;
    ^
rtmp.c:2599:24: warning: passing 'char *' to parameter of type 'const uint8_t *'
      (aka 'const unsigned char *') converts between pointers to integer types
      with different sign [-Wpointer-sign]
          MD5_Update(&md5ctx, user.av_val, user.av_len);
                              ^~~~~~~~~~~
rtmp.c:2490:53: note: expanded from macro 'MD5_Update'
#define MD5_Update(ctx,data,len)        md5_update(ctx,len,data)
                                                           ^
/Users/roushi/Desktop/RTMPDump_Test/include/nettle/md5.h:70:20: note: passing
      argument to parameter 'data' here
           const uint8_t *data);
                          ^
rtmp.c:2600:24: warning: passing 'char *' to parameter of type 'const uint8_t *'
      (aka 'const unsigned char *') converts between pointers to integer types
      with different sign [-Wpointer-sign]
          MD5_Update(&md5ctx, salt.av_val, salt.av_len);
                              ^~~~~~~~~~~
rtmp.c:2490:53: note: expanded from macro 'MD5_Update'
#define MD5_Update(ctx,data,len)        md5_update(ctx,len,data)
                                                           ^
/Users/roushi/Desktop/RTMPDump_Test/include/nettle/md5.h:70:20: note: passing
      argument to parameter 'data' here
           const uint8_t *data);
                          ^
rtmp.c:2601:24: warning: passing 'char *' to parameter of type 'const uint8_t *'
      (aka 'const unsigned char *') converts between pointers to integer types
      with different sign [-Wpointer-sign]
          MD5_Update(&md5ctx, r->Link.pubPasswd.av_val, r->Link.pubPassw...
                              ^~~~~~~~~~~~~~~~~~~~~~~~
rtmp.c:2490:53: note: expanded from macro 'MD5_Update'
#define MD5_Update(ctx,data,len)        md5_update(ctx,len,data)
                                                           ^
/Users/roushi/Desktop/RTMPDump_Test/include/nettle/md5.h:70:20: note: passing
      argument to parameter 'data' here
           const uint8_t *data);
                          ^
rtmp.c:2616:24: warning: passing 'char [56]' to parameter of type
      'const uint8_t *' (aka 'const unsigned char *') converts between pointers
      to integer types with different sign [-Wpointer-sign]
          MD5_Update(&md5ctx, salted2, B64DIGEST_LEN);
                              ^~~~~~~
rtmp.c:2490:53: note: expanded from macro 'MD5_Update'
#define MD5_Update(ctx,data,len)        md5_update(ctx,len,data)
                                                           ^
/Users/roushi/Desktop/RTMPDump_Test/include/nettle/md5.h:70:20: note: passing
      argument to parameter 'data' here
           const uint8_t *data);
                          ^
rtmp.c:2619:26: warning: passing 'char *' to parameter of type 'const uint8_t *'
      (aka 'const unsigned char *') converts between pointers to integer types
      with different sign [-Wpointer-sign]
            MD5_Update(&md5ctx, opaque.av_val, opaque.av_len);
                                ^~~~~~~~~~~~~
rtmp.c:2490:53: note: expanded from macro 'MD5_Update'
#define MD5_Update(ctx,data,len)        md5_update(ctx,len,data)
                                                           ^
/Users/roushi/Desktop/RTMPDump_Test/include/nettle/md5.h:70:20: note: passing
      argument to parameter 'data' here
           const uint8_t *data);
                          ^
rtmp.c:2621:26: warning: passing 'char *' to parameter of type 'const uint8_t *'
      (aka 'const unsigned char *') converts between pointers to integer types
      with different sign [-Wpointer-sign]
            MD5_Update(&md5ctx, challenge.av_val, challenge.av_len);
                                ^~~~~~~~~~~~~~~~
rtmp.c:2490:53: note: expanded from macro 'MD5_Update'
#define MD5_Update(ctx,data,len)        md5_update(ctx,len,data)
                                                           ^
/Users/roushi/Desktop/RTMPDump_Test/include/nettle/md5.h:70:20: note: passing
      argument to parameter 'data' here
           const uint8_t *data);
                          ^
rtmp.c:2622:24: warning: passing 'char [16]' to parameter of type
      'const uint8_t *' (aka 'const unsigned char *') converts between pointers
      to integer types with different sign [-Wpointer-sign]
          MD5_Update(&md5ctx, challenge2, B64INT_LEN);
                              ^~~~~~~~~~
rtmp.c:2490:53: note: expanded from macro 'MD5_Update'
#define MD5_Update(ctx,data,len)        md5_update(ctx,len,data)
                                                           ^
/Users/roushi/Desktop/RTMPDump_Test/include/nettle/md5.h:70:20: note: passing
      argument to parameter 'data' here
           const uint8_t *data);
                          ^
rtmp.c:2765:24: warning: passing 'char *' to parameter of type 'const uint8_t *'
      (aka 'const unsigned char *') converts between pointers to integer types
      with different sign [-Wpointer-sign]
          MD5_Update(&md5ctx, user.av_val, user.av_len);
                              ^~~~~~~~~~~
rtmp.c:2490:53: note: expanded from macro 'MD5_Update'
#define MD5_Update(ctx,data,len)        md5_update(ctx,len,data)
                                                           ^
/Users/roushi/Desktop/RTMPDump_Test/include/nettle/md5.h:70:20: note: passing
      argument to parameter 'data' here
           const uint8_t *data);
                          ^
rtmp.c:2766:24: warning: passing 'char [2]' to parameter of type
      'const uint8_t *' (aka 'const unsigned char *') converts between pointers
      to integer types with different sign [-Wpointer-sign]
          MD5_Update(&md5ctx, ":", 1);
                              ^~~
rtmp.c:2490:53: note: expanded from macro 'MD5_Update'
#define MD5_Update(ctx,data,len)        md5_update(ctx,len,data)
                                                           ^
/Users/roushi/Desktop/RTMPDump_Test/include/nettle/md5.h:70:20: note: passing
      argument to parameter 'data' here
           const uint8_t *data);
                          ^
rtmp.c:2767:24: warning: passing 'const char [5]' to parameter of type
      'const uint8_t *' (aka 'const unsigned char *') converts between pointers
      to integer types with different sign [-Wpointer-sign]
          MD5_Update(&md5ctx, realm, sizeof(realm)-1);
                              ^~~~~
rtmp.c:2490:53: note: expanded from macro 'MD5_Update'
#define MD5_Update(ctx,data,len)        md5_update(ctx,len,data)
                                                           ^
/Users/roushi/Desktop/RTMPDump_Test/include/nettle/md5.h:70:20: note: passing
      argument to parameter 'data' here
           const uint8_t *data);
                          ^
rtmp.c:2768:24: warning: passing 'char [2]' to parameter of type
      'const uint8_t *' (aka 'const unsigned char *') converts between pointers
      to integer types with different sign [-Wpointer-sign]
          MD5_Update(&md5ctx, ":", 1);
                              ^~~
rtmp.c:2490:53: note: expanded from macro 'MD5_Update'
#define MD5_Update(ctx,data,len)        md5_update(ctx,len,data)
                                                           ^
/Users/roushi/Desktop/RTMPDump_Test/include/nettle/md5.h:70:20: note: passing
      argument to parameter 'data' here
           const uint8_t *data);
                          ^
rtmp.c:2769:24: warning: passing 'char *' to parameter of type 'const uint8_t *'
      (aka 'const unsigned char *') converts between pointers to integer types
      with different sign [-Wpointer-sign]
          MD5_Update(&md5ctx, r->Link.pubPasswd.av_val, r->Link.pubPassw...
                              ^~~~~~~~~~~~~~~~~~~~~~~~
rtmp.c:2490:53: note: expanded from macro 'MD5_Update'
#define MD5_Update(ctx,data,len)        md5_update(ctx,len,data)
                                                           ^
/Users/roushi/Desktop/RTMPDump_Test/include/nettle/md5.h:70:20: note: passing
      argument to parameter 'data' here
           const uint8_t *data);
                          ^
rtmp.c:2784:24: warning: passing 'const char [8]' to parameter of type
      'const uint8_t *' (aka 'const unsigned char *') converts between pointers
      to integer types with different sign [-Wpointer-sign]
          MD5_Update(&md5ctx, method, sizeof(method)-1);
                              ^~~~~~
rtmp.c:2490:53: note: expanded from macro 'MD5_Update'
#define MD5_Update(ctx,data,len)        md5_update(ctx,len,data)
                                                           ^
/Users/roushi/Desktop/RTMPDump_Test/include/nettle/md5.h:70:20: note: passing
      argument to parameter 'data' here
           const uint8_t *data);
                          ^
rtmp.c:2785:24: warning: passing 'char [3]' to parameter of type
      'const uint8_t *' (aka 'const unsigned char *') converts between pointers
      to integer types with different sign [-Wpointer-sign]
          MD5_Update(&md5ctx, ":/", 2);
                              ^~~~
rtmp.c:2490:53: note: expanded from macro 'MD5_Update'
#define MD5_Update(ctx,data,len)        md5_update(ctx,len,data)
                                                           ^
/Users/roushi/Desktop/RTMPDump_Test/include/nettle/md5.h:70:20: note: passing
      argument to parameter 'data' here
           const uint8_t *data);
                          ^
rtmp.c:2786:24: warning: passing 'char *' to parameter of type 'const uint8_t *'
      (aka 'const unsigned char *') converts between pointers to integer types
      with different sign [-Wpointer-sign]
          MD5_Update(&md5ctx, apptmp.av_val, apptmp.av_len);
                              ^~~~~~~~~~~~~
rtmp.c:2490:53: note: expanded from macro 'MD5_Update'
#define MD5_Update(ctx,data,len)        md5_update(ctx,len,data)
                                                           ^
/Users/roushi/Desktop/RTMPDump_Test/include/nettle/md5.h:70:20: note: passing
      argument to parameter 'data' here
           const uint8_t *data);
                          ^
rtmp.c:2788:26: warning: passing 'char [11]' to parameter of type
      'const uint8_t *' (aka 'const unsigned char *') converts between pointers
      to integer types with different sign [-Wpointer-sign]
            MD5_Update(&md5ctx, "/_definst_", sizeof("/_definst_") - 1);
                                ^~~~~~~~~~~~
rtmp.c:2490:53: note: expanded from macro 'MD5_Update'
#define MD5_Update(ctx,data,len)        md5_update(ctx,len,data)
                                                           ^
/Users/roushi/Desktop/RTMPDump_Test/include/nettle/md5.h:70:20: note: passing
      argument to parameter 'data' here
           const uint8_t *data);
                          ^
rtmp.c:2797:24: warning: passing 'char [33]' to parameter of type
      'const uint8_t *' (aka 'const unsigned char *') converts between pointers
      to integer types with different sign [-Wpointer-sign]
          MD5_Update(&md5ctx, hash1, HEXHASH_LEN);
                              ^~~~~
rtmp.c:2490:53: note: expanded from macro 'MD5_Update'
#define MD5_Update(ctx,data,len)        md5_update(ctx,len,data)
                                                           ^
/Users/roushi/Desktop/RTMPDump_Test/include/nettle/md5.h:70:20: note: passing
      argument to parameter 'data' here
           const uint8_t *data);
                          ^
rtmp.c:2798:24: warning: passing 'char [2]' to parameter of type
      'const uint8_t *' (aka 'const unsigned char *') converts between pointers
      to integer types with different sign [-Wpointer-sign]
          MD5_Update(&md5ctx, ":", 1);
                              ^~~
rtmp.c:2490:53: note: expanded from macro 'MD5_Update'
#define MD5_Update(ctx,data,len)        md5_update(ctx,len,data)
                                                           ^
/Users/roushi/Desktop/RTMPDump_Test/include/nettle/md5.h:70:20: note: passing
      argument to parameter 'data' here
           const uint8_t *data);
                          ^
rtmp.c:2799:24: warning: passing 'char *' to parameter of type 'const uint8_t *'
      (aka 'const unsigned char *') converts between pointers to integer types
      with different sign [-Wpointer-sign]
          MD5_Update(&md5ctx, nonce.av_val, nonce.av_len);
                              ^~~~~~~~~~~~
rtmp.c:2490:53: note: expanded from macro 'MD5_Update'
#define MD5_Update(ctx,data,len)        md5_update(ctx,len,data)
                                                           ^
/Users/roushi/Desktop/RTMPDump_Test/include/nettle/md5.h:70:20: note: passing
      argument to parameter 'data' here
           const uint8_t *data);
                          ^
rtmp.c:2800:24: warning: passing 'char [2]' to parameter of type
      'const uint8_t *' (aka 'const unsigned char *') converts between pointers
      to integer types with different sign [-Wpointer-sign]
          MD5_Update(&md5ctx, ":", 1);
                              ^~~
rtmp.c:2490:53: note: expanded from macro 'MD5_Update'
#define MD5_Update(ctx,data,len)        md5_update(ctx,len,data)
                                                           ^
/Users/roushi/Desktop/RTMPDump_Test/include/nettle/md5.h:70:20: note: passing
      argument to parameter 'data' here
           const uint8_t *data);
                          ^
rtmp.c:2801:24: warning: passing 'char [9]' to parameter of type
      'const uint8_t *' (aka 'const unsigned char *') converts between pointers
      to integer types with different sign [-Wpointer-sign]
          MD5_Update(&md5ctx, nchex, sizeof(nchex)-1);
                              ^~~~~
rtmp.c:2490:53: note: expanded from macro 'MD5_Update'
#define MD5_Update(ctx,data,len)        md5_update(ctx,len,data)
                                                           ^
/Users/roushi/Desktop/RTMPDump_Test/include/nettle/md5.h:70:20: note: passing
      argument to parameter 'data' here
           const uint8_t *data);
                          ^
rtmp.c:2802:24: warning: passing 'char [2]' to parameter of type
      'const uint8_t *' (aka 'const unsigned char *') converts between pointers
      to integer types with different sign [-Wpointer-sign]
          MD5_Update(&md5ctx, ":", 1);
                              ^~~
rtmp.c:2490:53: note: expanded from macro 'MD5_Update'
#define MD5_Update(ctx,data,len)        md5_update(ctx,len,data)
                                                           ^
/Users/roushi/Desktop/RTMPDump_Test/include/nettle/md5.h:70:20: note: passing
      argument to parameter 'data' here
           const uint8_t *data);
                          ^
rtmp.c:2803:24: warning: passing 'char [9]' to parameter of type
      'const uint8_t *' (aka 'const unsigned char *') converts between pointers
      to integer types with different sign [-Wpointer-sign]
          MD5_Update(&md5ctx, cnonce, sizeof(cnonce)-1);
                              ^~~~~~
rtmp.c:2490:53: note: expanded from macro 'MD5_Update'
#define MD5_Update(ctx,data,len)        md5_update(ctx,len,data)
                                                           ^
/Users/roushi/Desktop/RTMPDump_Test/include/nettle/md5.h:70:20: note: passing
      argument to parameter 'data' here
           const uint8_t *data);
                          ^
rtmp.c:2804:24: warning: passing 'char [2]' to parameter of type
      'const uint8_t *' (aka 'const unsigned char *') converts between pointers
      to integer types with different sign [-Wpointer-sign]
          MD5_Update(&md5ctx, ":", 1);
                              ^~~
rtmp.c:2490:53: note: expanded from macro 'MD5_Update'
#define MD5_Update(ctx,data,len)        md5_update(ctx,len,data)
                                                           ^
/Users/roushi/Desktop/RTMPDump_Test/include/nettle/md5.h:70:20: note: passing
      argument to parameter 'data' here
           const uint8_t *data);
                          ^
rtmp.c:2805:24: warning: passing 'const char [5]' to parameter of type
      'const uint8_t *' (aka 'const unsigned char *') converts between pointers
      to integer types with different sign [-Wpointer-sign]
          MD5_Update(&md5ctx, qop, sizeof(qop)-1);
                              ^~~
rtmp.c:2490:53: note: expanded from macro 'MD5_Update'
#define MD5_Update(ctx,data,len)        md5_update(ctx,len,data)
                                                           ^
/Users/roushi/Desktop/RTMPDump_Test/include/nettle/md5.h:70:20: note: passing
      argument to parameter 'data' here
           const uint8_t *data);
                          ^
rtmp.c:2806:24: warning: passing 'char [2]' to parameter of type
      'const uint8_t *' (aka 'const unsigned char *') converts between pointers
      to integer types with different sign [-Wpointer-sign]
          MD5_Update(&md5ctx, ":", 1);
                              ^~~
rtmp.c:2490:53: note: expanded from macro 'MD5_Update'
#define MD5_Update(ctx,data,len)        md5_update(ctx,len,data)
                                                           ^
/Users/roushi/Desktop/RTMPDump_Test/include/nettle/md5.h:70:20: note: passing
      argument to parameter 'data' here
           const uint8_t *data);
                          ^
rtmp.c:2807:24: warning: passing 'char [33]' to parameter of type
      'const uint8_t *' (aka 'const unsigned char *') converts between pointers
      to integer types with different sign [-Wpointer-sign]
          MD5_Update(&md5ctx, hash2, HEXHASH_LEN);
                              ^~~~~
rtmp.c:2490:53: note: expanded from macro 'MD5_Update'
#define MD5_Update(ctx,data,len)        md5_update(ctx,len,data)
                                                           ^
/Users/roushi/Desktop/RTMPDump_Test/include/nettle/md5.h:70:20: note: passing
      argument to parameter 'data' here
           const uint8_t *data);
                          ^
rtmp.c:1902:1: warning: unused variable 'av_record' [-Wunused-const-variable]
SAVC(record);
^
rtmp.c:1556:35: note: expanded from macro 'SAVC'
#define SAVC(x) static const AVal av_##x = AVC(#x)
                                  ^
<scratch space>:147:1: note: expanded from here
av_record
^
rtmp.c:2904:19: warning: unused variable 'av_NetConnection_Connect_Rejected'
      [-Wunused-const-variable]
static const AVal av_NetConnection_Connect_Rejected =
                  ^
30 warnings generated.
gcc -Wall  -I/Users/roushi/Desktop/RTMPDump_Test/include -DRTMPDUMP_VERSION=\"v2.4\" -DUSE_GNUTLS  -O2    -c -o log.o log.c
gcc -Wall  -I/Users/roushi/Desktop/RTMPDump_Test/include -DRTMPDUMP_VERSION=\"v2.4\" -DUSE_GNUTLS  -O2    -c -o amf.o amf.c
In file included from amf.c:33:
./bytes.h:74:2: warning: "Float word order not defined, assuming the same as
      byte order!" [-W#warnings]
#warning "Float word order not defined, assuming the same as byte order!"
 ^
1 warning generated.
gcc -Wall  -I/Users/roushi/Desktop/RTMPDump_Test/include -DRTMPDUMP_VERSION=\"v2.4\" -DUSE_GNUTLS  -O2    -c -o hashswf.o hashswf.c
hashswf.c:585:22: warning: passing 'char [31]' to parameter of type
      'const uint8_t *' (aka 'const unsigned char *') converts between pointers
      to integer types with different sign [-Wpointer-sign]
  HMAC_setup(in.ctx, "Genuine Adobe Flash Player 001", 30);
                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
hashswf.c:51:66: note: expanded from macro 'HMAC_setup'
#define HMAC_setup(ctx, key, len)       hmac_sha256_set_key(&ctx, len, key)
                                                                       ^
/Users/roushi/Desktop/RTMPDump_Test/include/nettle/hmac.h:155:41: note: passing
      argument to parameter 'key' here
                    size_t key_length, const uint8_t *key);
                                                      ^
1 warning generated.
gcc -Wall  -I/Users/roushi/Desktop/RTMPDump_Test/include -DRTMPDUMP_VERSION=\"v2.4\" -DUSE_GNUTLS  -O2    -c -o parseurl.o parseurl.c
ar rs librtmp.a rtmp.o log.o amf.o hashswf.o parseurl.o
ar: creating archive librtmp.a
gcc -Wall  -I/Users/roushi/Desktop/RTMPDump_Test/include -DRTMPDUMP_VERSION=\"v2.4\"   -O2   -c -o rtmpdump.o rtmpdump.c
rtmpdump.c:335:23: warning: comparison of unsigned expression < 0 is always
      false [-Wtautological-compare]
      if (prevTagSize < 0 || prevTagSize > size - 4 - 13)
          ~~~~~~~~~~~ ^ ~
rtmpdump.c:398:14: warning: comparison of unsigned expression < 0 is always
      false [-Wtautological-compare]
  if (*dSeek < 0)
      ~~~~~~ ^ ~
2 warnings generated.
gcc -Wall  -o rtmpdump rtmpdump.o -Llibrtmp -lrtmp -lgnutls -lhogweed -lnettle -lgmp -lz  
ld: library not found for -lgnutls
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [rtmpdump] Error 1


If you need any further information, let me know what and how to get it.


Best Regards,

// Miya
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 2374 bytes
Desc: not available
URL: <http://lists.mplayerhq.hu/pipermail/rtmpdump/attachments/20151201/7d648765/attachment-0001.bin>


More information about the rtmpdump mailing list