關於怎樣查出一個庫函數到底在哪個庫文件中,我想到一個變通的辦法,以查找fcntl函數在哪個庫文件中為例吧:
1、找到一個使用fcntl的可執行文件,如test_fcntl。實在不行,自己編一個只有fcntl函數的c文件,然後編譯一下得了。
2、使用“ldd test_fcntl”命令,可以追蹤出該可執行文件到底使用了哪些庫文件。通常可能有幾個到幾十個。
3、根據要查找的函數的作用和上一步所得到的各庫文件的名字大致推測一下,該函數可能會在哪個或哪些庫中。
4、最後使用"nm test_fcntl"命令,依次查找一下第三步所得到的庫文件,通常就可以最後確定fcntl函數到底在哪個庫中。
比如,我用上面的方法查出fcntl函數在“/lib/tls/libc.so.6”庫中。