https://github.com/mstorsjo/fdk-aac
这个项目很小,就几个文件,几秒就编译完了。
这个文件:./libAACenc/src/aacenc_lib.cpp
里面调用了 Get_AacEncoder()这样一个函数,但项目里面找不到实现。
但又编译通过了,那我想这个函数只能是系统函数了,但系统里找遍了也没找到。
这怎么回事?
1
kkhaike 2015-11-30 09:44:51 +08:00
objdump -Dslx libfdk-aac.so.1.0.0 | grep Get_AacEncoder
|
2
harry890829 2015-11-30 09:45:24 +08:00
那个 cpp 包含了什么头文件呢?都是系统的么?
|
3
kkhaike 2015-11-30 09:47:38 +08:00
搞错了,这个好像是目标
|
4
zhuangzhuang1988 2015-11-30 09:51:02 +08:00
让你不用 ide!!
|
5
harry890829 2015-11-30 09:55:26 +08:00
@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_AacEncoderiE19__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 09:59:02 +08:00 1
https://github.com/mstorsjo/fdk-aac/blob/047376af8c47d45c78204112a7d1b873c93822bc/libAACenc/src/aacenc_lib.cpp
407 行 H_ALLOC_MEM (_AacEncoder, AACENCODER) |
8
kkhaike 2015-11-30 09:59:44 +08:00
那是编译进去了,是不是编译前自动生成的代码
|
10
kkhaike 2015-11-30 10:00:41 +08:00
楼上正解
|
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 11:16:04 +08:00
@bluesky139 你这样做也麻烦..
|
14
coofly 2015-11-30 13:57:45 +08:00
curl 里边也有一堆函数是像这样用宏定义的
|
15
fxxkgw 2015-11-30 15:34:52 +08:00
你可以用 gdb+demo 方式运行 然后 r 之前用 b 加这个函数断点,如果找不到那肯定是宏定义了,
|