小编S E*_*S E的帖子

链接错误:GCC 中 libm.a 的选择性静态链接

我想有选择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)

c linux gcc compilation static-linking

5
推荐指数
1
解决办法
8050
查看次数

标签 统计

c ×1

compilation ×1

gcc ×1

linux ×1

static-linking ×1