rtmpdump build problem on Mac OS X 10.11.1 El Capitan / Xcode 7.1.1
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
2015/12/01 9:17 P.M. 桃源老師 <xanadu6291@dream.jp> wrote:
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.
I have solved this issue by help of Mr.KSV on Audio/video stream recording forums. http://stream-recorder.com/forum/rtmpdump-build-problem-mac-os-x-using-t2049... Best Regards, // Miya aka. TougenRoushi
participants (1)
-
桃源老師