我使用的是dev系统,在访问其中的函数时,必须指定lib名称。
我以前使用过诸如open()之类的函数,不知怎么发现它们在libc.so中。
现在,我想使用lstat(),但它似乎不在libc中。可悲的是,我看过的手册没有记录函数的位置。
因此,有两个问题:
。
发布于 2010-02-24 15:10:55
在C中构建一个简单的测试用例,编译它并在其上运行'ldd -r‘来检查加载了什么库。如果C中没有lstat(),那么dev env就会出现问题。或者这个env可以追溯到符号链接时代之前:-)
发布于 2010-02-24 14:41:39
这是一种方法:
tomislav@malik:~$ cd /usr/lib
tomislav@malik:/usr/lib$ grep "lstat()" *
Binary file libperl.so.5.10 matches
Binary file libperl.so.5.10.0 matches
tomislav@malik:/usr/lib$ 发布于 2015-11-18 21:25:34
当我交叉编译Linux上的Windows应用程序时,如果我在链接方面有问题,我倾向于使用我命名为mingw-findin的脚本。类似的脚本可以用于常规Linux编译,而不是使用mingw替代方案,使用正则nm,而不是查看交叉编译前缀目录,查看/usr/lib。要使用这个脚本,我运行
./mingw-findin NameOfFunction
下面是代码:
#!/bin/sh
liblist=` ls /usr/x86_64-w64-mingw32/lib `
for i in $liblist
do
if x86_64-w64-mingw32-nm /usr/x86_64-w64-mingw32/lib/$i | grep -q $1; then
echo $i
x86_64-w64-mingw32-nm /usr/x86_64-w64-mingw32/lib/$i | grep $1
fi
donehttps://stackoverflow.com/questions/2326636
复制相似问题