zoukankan      html  css  js  c++  java
  • C语言编译包含math库加参数-lm

    在 Linux 系统下,C 源文件若调用了 math 库里的函数,则编译时要加上 -lm (是字母 l ,不是数字 1),表示链接到 math 库。

    文件名称:1.c
    #include<stdio.h> #include<math.h> //程序中要调用求平方根函数 sqrt int main(){ double a,b,c,disc,x1,x2,p,q; scanf("%lf%lf%lf",&a,&b,&c); disc = b * b - 4 * a * c; p = -b / (2.0 * a); q = sqrt(disc) / (2.0 * a); x1 = p + q,x2 = p - q; printf("x1=%7.2f x2=%7.2f ",x1,x2); return 0; }

    那么:

    gcc 1.c -lm

    原因

    因为数学函数位于 libm.so 库文件中(这些库文件通常位于 /lib 目录下),
    -lm 选项告诉编译器,我们程序中用到的数学函数要到这个库文件里找。
    
    而 printf 为什么不需要呢?
    这是因为它位于 libc.so 库文件中,
    使用 libc.so 中的库函数在编译时不需要加 -lc 选项,
    当然加了也不会错,因为这个选项是 gcc 的默认选项。
  • 相关阅读:
    lnmp 优化
    linux-lnmp 搭建报错
    nfs 配置
    全网备份脚本rsync
    .Net面试题二
    软件设计模式
    .Net面试题一
    asp.net运行机制
    NHiberante的优缺点
    什么是架构、框架、模式和平台
  • 原文地址:https://www.cnblogs.com/straybirds/p/14807036.html
Copyright © 2011-2022 走看看