#include <stdio.h>
int main(void)
{
float value;
value = sin ( 3.14 / 2 );
printf("%f/n",value);
}
(三角函数里面的
sin(90度角),要注意的是,大多数的程序语言都是使用径度而不是一般我们在计算的『角度』, 180 度角约等于 3.14
径度)
当使用gcc编译器编译含数学函数的C程序时,会出现undefined reference to
`sin'错误.这种错误一般是由于缺少库造成的.
[guest@test guest]# gcc sin.c -lm -L/lib -L/usr/lib
# 特别注意,那个 -lm 可以拆开成两部份来看,
# -l 是『加入某个函式库(library)』的意思,而
# m 则是 libm.so 这个函式库,其中, lib 与附档名(.a 或 .so)不需要写
# 所以 -lm 表示使用 libm.so (或 libm.a) 这个函式库的意思~
# 至于那个 -L 后面接的路径呢?这表示:
#『我要的函式库 libm.so 请到 /lib 或 /usr/lib 里面搜寻!』
[guest@test guest]# ./a.out
1.000000
由于 Linux
预设是将函式库放置在 /lib 与 /usr/lib 当中,所以您没有写 -L/lib 与 -L/usr/lib
也没有关系的!不过,万一哪天您使用的函式库并非放置在这两个目录下,那么 -L/path 就很重要了!否则会找不到函式库
除了连结的函式库之外,您或许已经发现一个奇怪的地方,那就是在我们的
sin.c 当中第一行『
#include
<stdio.h>
』,这行说的是要将一些定义数据由 stdio.h 这个档案读入,这包括
printf 的相关设定。这个档案其实是放置在 /usr/include/stdio.h
的!那么万一这个档案并非放置在这里呢?那么我们就可以使用底下的方式来定义出要读取的 include 档案放置的目录:
[guest@test guest]# gcc sin.c -lm -I/usr/include
-I/path 后面接的路径( Path )就是设定要去搜寻相关的
include 档案的目录啦!不过,同样的,默认值是放置在 /usr/include 底下,除非您的 include
档案放置在其它路径,否则也可以略过这个项目!
引用:http://blog.csdn.net/dfman1978/article/details/6105421
分享到:
相关推荐
在Fedora 17上搭建ARM-Linux-GCC交叉编译环境是一项重要的任务,尤其对于在x86架构上开发针对ARM处理器的应用程序的开发者来说。以下是一个详细的步骤指南: 首先,你需要获取ARM-Linux-GCC交叉编译工具链。在这个...
5. **编译模块**:在`hello.c`和Makefile所在的目录中运行`make`命令,会调用内核构建系统的`make`,编译`hello.c`为内核模块`hello.ko`。 6. **加载和卸载模块**:在纯控制台环境下(可通过`init 3`从图形界面切换...
对于C语言爱好者来说,掌握如何在Linux下使用GCC编译和运行C语言源文件是至关重要的。下面我们将详细探讨这个过程,以及相关的一些知识点。 首先,安装GCC。在大多数Linux发行版中,GCC可能已经预装,如果没有,...
交叉编译是在一种架构(如Fedora 8的x86)上编译代码,使其能在另一种架构(如S3C2410的ARM)上运行。在这个过程中,开发者首先安装了主机编译器(GCC 3.4.1),然后安装了交叉编译器(arm-linux-gcc-3.4.1),以...
"Linux 下编写 C 源程序并编译运行" Linux 是一个开源的操作系统,广泛应用于服务器、移动设备、嵌入式系统等领域。作为一个程序员,掌握 Linux 基本操作和编写 C 源程序是非常必要的。本文将指导读者在 Linux 环境...
在Fedora 9环境下,将虚拟机运行在VMware上时,进行文件共享是一个常见的需求。这有助于在宿主机和虚拟机之间方便地传输数据。本文将详细解释三种在Fedora 9 VMWare环境中实现文件共享的方法。 1. **自定义ISO文件*...
本教程将详细讲解如何在Fedora 9操作系统上编译一个名为"hello"的简单驱动模块,这为初学者提供了一个很好的实践平台。 首先,我们需要了解Linux内核模块的基本概念。内核模块是可加载到运行中的内核中的代码片段,...
在这个例子中,`gcc`用于编译C源代码,生成可执行文件`WaitTest`,然后`time`命令执行这个程序并提供运行时间报告。 `time`命令会输出三个时间指标: 1. **用户时间**(User Time):程序在用户空间执行所花费的...
本文将详细介绍如何在Fedora12操作系统下使用crosstool工具建立一个ARM交叉编译环境,且无需删除原有的GCC工具链。crosstool是一款用于自动化配置、编译和安装交叉编译器的脚本工具,它可以显著简化交叉编译器的构建...
编译完成后,可以直接运行 facedetect 程序: $ ./facedetect --cascade="/usr/local/share/$OPENCV/haarcascades/haarcascade_frontalface_alt.xml" --scale=1.5 lena.jpg 如果安装成功,应该会看到输出一副人脸...
在Fedora系统上,GCC和G++对于软件开发人员来说是不可或缺的,因为它们能够将源代码编译成可执行程序。 本压缩包"fedora22_gcc-5.1.1"显然是针对Fedora 22的一个GCC 5.1.1版本的安装包集合。GCC 5.1.1是GCC的5.x...
移植完成后,你可以在Qt Creator中创建项目,通过交叉编译配置进行开发,然后通过USB或网络将编译好的二进制文件传输到Micro2440上运行。同时,记得配置好tslib以支持触摸屏功能,这对于在嵌入式设备上交互至关重要...
接下来需要为 OpenCV 的编译配置创建一个 `release` 文件夹,并在该文件夹中通过 `cmake` 工具来生成 Makefile 文件。 **命令行操作:** 1. **进入 OpenCV 目录:** ```bash cd /home/OpenCV-2.3.1 ``` 2. **...
- 在开发板上运行`ts_calibrate`后,出现找不到文件或目录的错误。这通常是因为环境变量未正确设置,需要检查并更新`TSLIB_TSDEVICE`等环境变量。 完成以上步骤后,QT开发环境的基础部分已经搭建完成,现在可以安装...
* 编译和运行环境 * Visual C++6.0,Visual C++.net and Visual C++.net 2003 * WinNT,Win2000,WinXP and Win2003 * 2gcc version 3.3.2 20031022(Red Hat Linux 3.3.2-1) * Redhat Fedora core 1...
通过上述步骤,可以有效地解决在Fedora 13环境下安装和使用ns2-allinone-2.30过程中常见的编译错误和NAM运行错误问题。这些解决方案不仅适用于Fedora 13,也可能适用于其他类似的操作系统环境。希望这些经验分享能...
本文将深入探讨如何在Fedora 28操作系统上对Seafile客户端进行交叉编译,使其能够在Windows系统(如Win7和Win10)中运行。Seafile是一款开源的云存储和文件同步服务,它的客户端支持多种操作系统,包括Linux、...