
https://github.com/mstorsjo/fdk-aac
这个项目很小,就几个文件,几秒就编译完了。
这个文件:./libAACenc/src/aacenc_lib.cpp
里面调用了 Get_AacEncoder()这样一个函数,但项目里面找不到实现。
但又编通过了,那我想这个函数只能是系统函数了,但系统里找遍了也没找到。
这怎么回事?
1 kkhaike 2015 年 11 月 30 日 objdump -Dslx libfdk-aac.so.1.0.0 | grep Get_AacEncoder |
2 harry890829 2015 年 11 月 30 日 那个 cpp 包含了什么头文件呢?都是系统的么? |
3 kkhaike 2015 年 11 月 30 日 搞错了,这个好像是目标 |
4 zhuangzhuang1988 2015 年 11 月 30 日 让你不用 ide!! |
5 harry890829 2015 年 11 月 30 日 @zhuangzhuang1988 哈哈,用 ide 确实直接查看定义就好 |
6 bluesky139 OP @kkhaike objdump 看到的确实是个函数。 objdump -Dslx libfdk-aac.so | grep Get_AacEncoder 000000000008dea0 l O .rodata 0000000000000020 _ZZ14Get_AacEncoderiE19__PRETTY_FUNCTION__ 0000000000022b70 l F .text 0000000000000033 _Z14Get_AacEncoderi 0f910 4765745f 41616345 6e636f64 65726900 Get_AacEncoderi. 0000000000022b70 <_Z14Get_AacEncoderi>: _Z14Get_AacEncoderi(): 22b72: 75 0f jne 22b83 <_Z14Get_AacEncoderi+0x13> 22b83: 48 8d 0d 16 b3 06 00 lea 0x6b316(%rip),%rcx # 8dea0 <_ZZ14Get_AacEncoderiE19__PRETTY_FUNCTION__> 22d9a: e8 d1 fd ff ff callq 22b70 <_Z14Get_AacEncoderi> 8de30: 73 74 jae 8dea6 <_ZZ14Get_AacEncoderiE19__PRETTY_FUNCTION__+0x6> 8de3a: 42 75 66 rex.X jne 8dea3 <_ZZ14Get_AacEncoderiE19__PRETTY_FUNCTION__+0x3> 8de3f: 73 63 jae 8dea4 <_ZZ14Get_AacEncoderiE19__PRETTY_FUNCTION__+0x4> 8de47: 73 74 jae 8debd <_ZZ14Get_AacEncoderiE19__PRETTY_FUNCTION__+0x1d> 8de51: 42 75 66 rex.X jne 8deba <_ZZ14Get_AacEncoderiE19__PRETTY_FUNCTION__+0x1a> 8de56: 73 63 jae 8debb <_ZZ14Get_AacEncoderiE19__PRETTY_FUNCTION__+0x1b> 8de7e: 73 2a jae 8deaa <_ZZ14Get_AacEncoderiE19__PRETTY_FUNCTION__+0xa> 000000000008dea0 <_ZZ14Get_AacEncoeriE19__PRETTY_FUNCTION__>: _Z14Get_AacEncoderi(): 22b3a: 7c 66 jl 22ba2 <_Z14Get_AacEncoderi+0x32> 22b43: 76 3a jbe 22b7f <_Z14Get_AacEncoderi+0xf> 22b58: 7d 4a jge 22ba4 <_Z14Get_AacEncoderi+0x34> _Z14Get_AacEncoderi(): 22b7c: 79 01 jns 22b7f <_Z14Get_AacEncoderi+0xf> 22af6: 70 79 jo 22b71 <_Z14Get_AacEncoderi+0x1> 22b19: 73 65 jae 22b80 <_Z14Get_AacEncoderi+0x10> 22b27: 42 79 74 rex.X jns 22b9e <_Z14Get_AacEncoderi+0x2e> 22b2e: 79 74 jns 22ba4 <_Z14Get_AacEncoderi+0x34> 22b34: 73 65 jae 22b9b <_Z14Get_AacEncoderi+0x2b> 22b38: 70 42 jo 22b7c <_Z14Get_AacEncoderi+0xc> _Z14Get_AacEncoderi(): 22ba2: 73 00 jae 22ba4 <_Z14Get_AacEncoderi+0x34> 22bab: 72 00 jb 22bad <_Z14Get_AacEncoderi+0x3d> _Z14Get_AacEncoderi(): 8de9e: 78 05 js 8dea5 <_ZZ14Get_AacEncoderiE19__PRETTY_FUNCTION__+0x5> 8dea9: 78 05 js 8deb0 <_ZZ14Get_AacEncoderiE19__PRETTY_FUNCTION__+0x10> _Z14Get_AacEncoderi(): |
7 mrhhsg 2015 年 11 月 30 日 https://github.com/mstorsjo/fdk-aac/blob/047376af8c47d45c78204112a7d1b873c93822bc/libAACenc/src/aacenc_lib.cpp 407 行 H_ALLOC_MEM (_AacEncoder, AACENCODER) |
8 kkhaike 2015 年 11 月 30 日 那是编译进去了,是不是编译前自动生成的代码 |
10 kkhaike 2015 年 11 月 30 日 楼上正解 |
11 bluesky139 OP @harry890829 @zhuangzhuang1988 不仅包含系统,也包含了一些项目中的文件。 https://github.com/mstorsjo/fdk-aac/blob/master/libAACenc/src/aacenc_lib.cpp 不想搞 IDE ,这么小个项目,而且直接 configure 再 make 一下就完了,搞 IDE 麻烦啊。 |
12 bluesky139 OP @mrhhsg 多谢,居然没找到,因为 objdump 出来是确有这个函数我就没想函数名跟宏的名字是一样的,唉。 |
13 zhuangzhuang1988 2015 年 11 月 30 日 @bluesky139 你这样做也麻烦.. |
14 coofly 2015 年 11 月 30 日 curl 里边也有一堆函数是像这样用宏定义的 |
15 fxxkgw 2015 年 11 月 30 日 你可以用 gdb+demo 方式运行 然后 r 之前用 b 加这个函数断点,如果找不到那肯定是宏定义了, |