在使用cygwin编译c语言的时候,求开方的sqrt函数不能识别,什么情况啊。另外我加上math文件了,也加了-lm

作者&投稿:守勇 (若有异议请与网页底部的电邮联系)
gcc编译带math.h的程序,加-lm参数也没用~

报错的是ld阶段,表示链接失败,找不到squr函数,根本原因是找不到libm.so。跟math.h头文件没有任何关系,头文件有问题的话在预处理阶段编译之前就会报错了。

你的-lm估计加的地方不对,要确保在链接阶段添加,不是编译的时候。

(转)从windows到linux--编程篇--cygwin,在win中开发linux程序 从windows到linux -- 编程篇 -- cygwin,在win中开发linux程序
乾坤一笑[smileonce] smileonce@126.com 2004-7-23
版权所有 转载请注明出处 http://blog.csdn.net/smileonce 很多用windows的朋友不习惯于用linux的开发环境。虽然很乐意尝试一下,但是往往怕linux系统
打乱了自己的正常生活:1〉装linux系统把windows系统给搞坏了,导致自己无法正常生活;2>linux开
发上手太难,写出第一个helloworld不亚于java的难度,环境配置摸不着头脑。 对于此,我的看法是:
路不管平还是陡,终归你要走的,如果你愿意投入到linux开发的社群中来,不会安装linux系统,不会配
置工作环境是不能想象的。(事实上,确实要了解很多东西的原理,不然很难排错:诸如,硬盘引导器的引
导原理、分区结构原理及linux分区结构和文件系统、环境变量的设置、种类繁多的压缩包安装包的解压安
装方法、用户管理权限管理等常用命令、以至于驱动安装系统中文化等等异常琐碎的东东)。本文试图跳过这个难走的步骤,启用一个win环境下的linux仿真器(和linux下面的命令行开发环境基本
一致),用短短的20分钟的时间,教你做出一个纯正的linux下gcc编译的helloworld。就象是买点心前
先尝尝味道,不也是一件很愉快的事情么?(注:cygwin事实上不仅有此模拟功能,它也是移植unix
win程序的一个很有效的工具,也有人用它来做嵌入式系统开发)一、cygwin是什么?
这个问题你最好google一下"cygwin的历史",或许能够获得更为详尽的答案。简而言之,cygwin是一
个在windows平台上运行的linux模拟环境,是cygnus solutions公司开发的自由软件(该公司开发了
很多好东西,著名的还有eCos,不过现已被Redhat收购)。插一句废话,很多朋友不明白linux和unix的
区别和联系,在此也简要介绍一下。UNIX是一个注册商标,是要满足一大堆条件并且支付可观费用才能够
被授权使用的一个操作系统;linux是unix的克隆版本,是由其创始人Linus和诸多世界知名的黑客手工打
造的一个操作系统。为什么linux和unix之间有很多软件可以很轻松的移植?因为linux也满足POSIX规
范,所以在运行机制上跟unix相近。
以下引用网上的一段话(出处:aspx"> http://blog.csdn.net/glock18/archive/2004/07/10/38275.aspx),
用于说明cygwin的工作机制:cygnus当初首先把gcc,gdb,gas等开发工具进行了改进,使他们能够生成
并解释win32的目标文件。然后,他们要把这些工具移植到windows平台上去。一种方案是基于win32 api
对这些工具的源代码进行大幅修改,这样做显然需要大量工作。因此,他们采取了一种不同的方法——他们写
了一个共享库(就是cygwin dll),把win32 api中没有的unix风格的调用(如fork,spawn,signals,
select,sockets等)封装在里面,也就是说,他们基于win32 api写了一个unix系统库的模拟层。这样,
只要把这些工具的源代码和这个共享库连接到一起,就可以使用unix主机上的交叉编译器来生成可以在
windows平台上运行的工具集。以这些移植到windows平台上的开发工具为基础,cygnus又逐步把其他的
工具(几乎不需要对源代码进行修改,只需要修改他们的配置脚本)软件移植到windows上来。这样,在
windows平台上运行bash和开发工具、用户工具,感觉好像在unix上工作。关于cygwin实现的更详细描述,
请参考 http://cygwin.com/cygwin-ug-net/highlights.html二、cygwin的安装。
cygwin的安装文件很容易通过google找到。目前国内的网站上有“网络安装版”和"本地安装版"两种。
标准的发行版应该是 网络安装版。两者并无大不同,下面介绍一下安装的过程。 step1. 下载后,点击安装文件(setup.exe)进行安装,第一个画面是GNU版权说明,点"下一步(N)—>",
进入安装模式选择画面。 step2. 安装模式有"Install from Internet"、"Download form Internet"、
"Install from Local Directory" 三种。"Install form Internet"就是直接从internet上装,
适用于网速较快的情况。如果你和我一样网速不是很快,或者说装过之后想把下载的安装文件保存起来,
下次不再下载了直接安装,就应该选择"Download form Internet",下载安装的文件(大约40M左右)。
事实上,所谓的"本地安装版",也是别人从网上下载全部文件后打的包(适用于中国国情嘛^_^)

step3. 接下来是选择安装目的路径和安装源文件所在的路径,之后就进入了选择安装包所在的路径。
注意了阿,这里可是重头戏。我第一安装的时候就是没有看清这一步,结果没有把gcc装进去,导致没法编
译文件。
+ All Default
+ Admin Default
....
+ Devel Default
+ Editors Default
....
如上图所示,你在这个TreeView的某个节点上双击,就可以改变它的状态,如Default、Install、
Uninstall、Reinstall四种状态。默认的都是Default状态,很多工具的默认状态都是不安装。
在这里我选择了在All上点Install,全部安装,以免后患。(全部安装大概不到200M的空间) step4. 点下一步,安装成功。它会自动在你的桌面上建立一个快捷方式。 好了,下面就开始我的linux旅程了。双击cygwin的快捷方式进入系统。
首先介绍几个简单的linux命令。
pwd 显示当前的路径
cd 改变当前路径,无参数时进入对应用户的home目录
ls 列出当前目录下的文件。此命令有N多参数,比如ls -al
ps 列出当前系统进程
kill 杀死某个进程
mkdir 建立目录
rmdir 删除目录
rm 删除文件
mv 文件改名或目录改名
man 联机帮助
less 显示文件的最末几行由于linux下面的命令大多都有很多参数,可以组合使用。所以,每当你不会或者记不清楚改用那个参数,
那个开关的时候,可以用man来查找,比如,我想查找ls怎么使用,可以键入
$ man ls
系统回显信息如下:
LS(1) FSF LS(1)
NAME
ls - list directory contents
SYNOPSIS
ls [OPTION]... [FILE]...
DESCRIPTION
List information about the FILEs (the current directory by
default). Sort entries alphabetically if none of -cftuSUX
nor --sort.
-a, --all
do not hide entries starting with .
-A, --almost-all
do not list implied . and ..
-b, --escape
print octal escapes for nongraphic characters
--block-size=SIZE
use SIZE-byte blocks
:
很全是吧,嘿嘿。好了,多说无意,让我们来写一个hello world程序。
# cd
进入了/home/administrator目录,我当前的登陆帐号是administrator# mkdir source
建立一个叫做source的子目录# cd source
进入 /home/administrator/source# vim hello.c 启动vim编辑器,来编写程序。好了,现在有必要简要介绍一下vim。
在linux界,有两大编辑器最有历史。其一是vi,其二是emacs。vi现在已经演化成了vim,比当前的vi
更为强大。vim和emacs是两种截然不同的东西,vim强调用简洁的命令来完成功能,无论是查找、替换、
正则表达式匹配、编译、链接、排错、函数间跳转等等等等都在命令行中完成,并且它把方向键也集成在
了hjkl四个键之上,可以说,用了vim基本上可以不用鼠标了:p emacs则是在功能强大上做文章,版本
控制、模拟多种编辑环境、对文本进行各种操作,可谓之一个强大的文本处理系统。emacs是用诸如
Ctrl+Alt+K 之类的组合键来控制的;vim则是用se(set 的缩写)等简洁命令来控制的。
由于cygwin中只提供了vim(能不能自己装emacs我还没有试过),我们就先体验一下vim吧:p
vim加载文本文件后分为命令模式和插入模式两种。插入模式,顾名思义就是输入编辑文本;命令模式,则
是输入各种控制命令,常用的有:
i 进入编辑模式
h 左移
j 下移
k 上移
l 右移
w 存盘
q 退出
! 强调执行有些命令是可以组合使用的,如果你修改了某个文件,想存盘退出,则可以使用wq;如果你想放弃存盘,
直接退出则可以使用q! 好了大家体验一下吧,记住:从编辑模式退回命令模式按"Esc",再按":",在输入指
令,从命令模式进入编辑模式用i,初次使用vim肯定很难受,嘿嘿,不过用多了就习惯了,确实很省劲。我们编辑hello.c文件,输入:
#include int main(void) {
printf( "Hello World!");
}
然后,输入wq命令退到命令行。
输入编译指令:
# gcc hello.c -o hello
编译成功后可以看一下
# ls
看到hello.exe了吧,嘿嘿。
好,让我们运行看看。
# ./hello
效果如何?不错吧? :)okey,现在玩一个C++的hello world,
# vim world.cpp
输入:
#include
using namespace std;void main() {
cout << "Hello World!";
}
编译C++程序要用g++
# g++ world.cpp -o world
运行一下哈,
# ./world如何,效果不错吧?诸位都是高手,走到这步应该编些简单程序都不成问题了吧:p
好了,关于如何编写makefile文件,如何用gdb下次再说了。

你确定你写的是
#include "math.h"
对对跟我写的有区别么
不用加-lm

-------------------下面是我的可用的程序
#include <stdio.h>
#include "math.h"
int main()
{
int a = 4; printf("%d\n",(int)sqrt(a));
}

#include<stblib.h> 加上这个试试


win10下使用cygwin不能编译
下载cygwin安装程序,运行 选择安装类型:从网络安装、仅下载不安装、从本地安装,一般选网络安装 选择安装目的路径 选择网络下载的文件保存到的本地路径 选择联网方式 选择下载站点 选择软件包,根据需要,标记成install。

cygwin下编译,调试C源程序
你是初学者吧,没关系,很简单的。cygwin我没用过,大概是别人给套了个可视化编程界面了。1.你运行cygwin这个软件,然后“文件\/打开\/”把你准备好的C源代码加载到这个软件中。(就好比我们平时用word时,先运行word软件,然后把你的文档加如入并进行编辑。)2.在软件界面上(一般在:工具栏)找一个...

cygwin下可以编译android源码吗
1.Cygwin简介 Cygwin是在Windows下模拟Linux环境的工具集,它主要包含一下两个部分:1) cywin1.dll : 该文件模拟了真是的LinuxAPI,是一个API模拟层,开发人员可以将在Linux下编写的C\/C++ 源代码在Cygwin中进行编译,在编译的过程中,如果C\/C++ 调用了Linux中的API,Cygwin就会利用cygwin1.dll 来...

如何在没有make的Cygwin中编译生成make.exe
3.4.4了。首先,别的不说,先曲下载一个make 3.81的压缩包,在cygwin下解压缩,进入解压缩得到的文件夹中。依次键入:.\/configure .\/build.sh 于是在当前文件夹中会自动生成make.exe。然后将复制或者移动到shell命令根目录下:mvmake.exe \/bin 然后就可以在任意cygwin路径下使用make了。

linux操作系统入门linux系统操作教程
cygwin使用教程?cygwin是一个在windows平台上运行的类UNIX模拟环境。cygwin可以满足你在Windows系统上学习Linux基本命令操作、脚本调试的基本需求。cygwin使用:1、cygwin安装简单,可以让你免于安装VMWARE+Linux镜像。2、cygwin可以让你在Windows系统上使用Linux基础命令、vi编辑器,满足你学习linux命令学习、调试...

请教如何使用cygwin编译ffmpeg静态库
如何使用ndk为ffmpeg编译rtmp+polarssl静态库?这个问题花了我整整一天时间。其中遇到很多小问题,这里记录一下,方便自己也方便其他人。1、编译polarssl,查看其Readme文件即可,不需要configure,只需要make时带上必要的参数即可,不过要记得在每一次执行make命令时都带上CC的参数(指向你的arm gcc),...

Cygwin组成
而不支持KOI8-R、ISO\/IEC 8859-5或UTF-8等其他字符集。Red Hat对Cygwin库的使用有规定,它遵循GNU通用公共许可证,这意味着你可以自由地链接和使用。但需要注意的是,对于那些基于Cygwin库的专有软件,Red Hat提供了另一种价格不菲的许可协议,允许这些软件进行再发布,但需遵守特定的条款和条件。

cygwin中怎么编译arm-linux-gcc的源文件
确定cygwin中安装了TAR命令,用tar解压,解压后进去目录,.\/config>make>在你安装目录下就有交叉编译工具了

cygwin是什么
2. Cygwin的主要功能 Cygwin提供了多种Unix风格的命令和工具,如bash、make、gcc等。它还支持X Window系统,可以在Windows上运行图形界面的Unix应用程序。此外,Cygwin还提供了POSIX标准的文件和目录访问方式,使得开发者可以在Windows环境中使用标准的Unix编程接口。3. Cygwin的应用场景 Cygwin特别适用于那些...

win7 64位机已经安装了Cygwin 和WinPcap 及snort,如何在Cygwin中编译...
假设你的snort.exe位于d:\\snort\\bin\\snort.exe。按以下步骤:开始——运行——cmd——d:——cd snort\\bin——snort 但snort一般都是配合命令来用的,要加一些选项才有效果。如(这里的路径是我电脑上的):snort -c c:\\snort\\etc\\snort.conf -l c:\\snort\\logs -d -e -v 如果要结束,可以...

横山县13265341260: 在使用cygwin编译c语言的时候,求开方的sqrt函数不能识别,什么情况啊.另外我加上math文件了,也加了 - lm -
金戚倍珞: 你确定你写的是 #include "math.h" 对对跟我写的有区别么 不用加-lm-------------------下面是我的可用的程序 #include <stdio.h> #include "math.h" int main() {int a = 4; printf("%d\n",(int)sqrt(a)); }

横山县13265341260: 用Cygwin如何编C/C++程序 -
金戚倍珞: 首先当然要在cygwin中安装编译环境了,比如说gcc,然后就用一些普通的编辑工具写代码,或者使用cygwin中的编辑工具也行.代码写好后,用gcc编译就可以了,很简单啊.gcc编译方法可以看一下gcc的文档,复杂点的,可以用make了

横山县13265341260: 如何在Eclipse中如何用cygwin把C文件编译成so文件 -
金戚倍珞: 用cygwin把C文件编译成so文件:1:首先,要准备好一个jni文件夹,里面包含三个文件:makefile文件:LOCAL_PATH:=$(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE:=test-jni LOCAL_SRC_FILES := test-jni.c include $(BUILD_...

横山县13265341260: 安装cygwin时,还要编译C语言,还要选择哪些呢 -
金戚倍珞: 错误信息 “无效的用户 bin”不是已经很清楚的告诉你了吗, 你这个工具的 makefile 在安装时,会设置文件 owner 信息为 用户 "bin". 显然,你的 cygwin 没有创建这个用户. 有两种解决方法, 1, 在 cygwin 下创建用户(及用户组) bin, ...

横山县13265341260: 在cygwin下用gcc编译一个程序的详细步骤,求详解 -
金戚倍珞: 1 编写c源程序,可以用vim,甚至是记事本,假设是hello.c #include <stdio.h>int main(void) { printf("Hello world!\n");return 0; } 2 假设hello.c所在目录是你的家目录 3 命令行下: cd ~ gcc hello.c -o hello -Wall 4 运行命令 ./hello

横山县13265341260: 弱问cygwin下gcc的编译问题 -
金戚倍珞: cd /cygdrive/f/ 进入f盘,即可编译了 问题的关键就是C、D、E、F盘在cygwin下是位于/cygdrive下的

横山县13265341260: win7下GCC已经安装好,怎么开始编译?点哪个文件打开编译器? -
金戚倍珞: 1、 先去Cygwin网站下载一个安装文件(setup.exe),这个文件体积很小,只有不到300KB.然后双击运行setup.exe.因为是第一次安装,所以必须选择从Internet在线安装,也可以先从Internet下载安装文件,然后再手动安装.我选择后者,因...

横山县13265341260: Cygwin Terminal 下 怎么写C++程序并编译运行 -
金戚倍珞: 你可以利用touch a.cpp建立一个空的文件,然后利用vi a.cpp进行编辑操作,g++ a.cpp进行编译,./a.out进行运行程序操作.也可以直接vi进去,退出进行相应的文件的保存.

横山县13265341260: 怎样用cygwin编译C的源程序 -
金戚倍珞: cygwin 只是平台、是环境.....还是要安装gcc,或调用vc 去编译、链接的.....~

横山县13265341260: 如何在cygwin下交叉编译GCC及使用 -
金戚倍珞: 在Cygwin/gcc环境下编译出来的程序,在Windows下执行的时候必须依赖cygwin1.dll,如果要不依赖于这个dll文件的话,可在用Cygwin/gcc编译时加上-mno-cygwin选项.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网