我想有选择libm.a地静态链接所有其他库(libc.so包括)动态链接。但如果我使用 中的数学函数math.h,它几乎总是无法正确链接。为什么?为什么有时会起作用?(例如,如果我只使用sqrt,fabs或者,奇怪的是,tanh,它似乎链接正确)
myscript.sh:
#!/bin/bash
for i in sqrt tanh sin tan
do
echo "-----$i----------"
sed "s/ciao/$i/" prova.c >provat.c
gcc provat.c -fno-builtin -l:libm.a
[[ $? -eq 0 ]] && { echo -n "$i(2.0)="; ./a.out; echo " OK!"; }
echo
done
Run Code Online (Sandbox Code Playgroud)
普罗瓦.c:
#include <stdio.h>
#include <math.h>
int main()
{
printf("%f", ciao(2.0));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
如果我运行myscript.sh,我可以看到这一点sqrt并且tanh不会出现任何问题。sin相反tan,无法链接:
$./myscript.sh
-----sqrt----------
sqrt(2.0)=1.414214 …Run Code Online (Sandbox Code Playgroud)