[问题]在TC下编写的两个小程序如何移植到ubuntu8.04下?
-
- 帖子: 23
- 注册时间: 2008-05-23 17:23
[问题]在TC下编写的两个小程序如何移植到ubuntu8.04下?
小弟是一菜鸟,在TC下编写了两个C程序,请各位大虾指点一下如何将其在ubuntu8.04下编译通过并运行?
主要可能是库函数的问题:
程序一SUNO1.c:
#include<time.h>
#include<stdlib.h>
#include<math.h>
#include<stdio.h>
main()
{ int i,M=1024,N=20;
double fm=2000000;
double x,y,pi=3.14,a1,a2,a3,w,c,r,t;
c=sqrt(2/(double)M);
w=2*pi*fm;
srand((int)time(0));
for(t=1;t<N+1;t++)
{x=0,y=0;
for(i=1;i<M+1;i++)
{ a3=(2*pi*i-pi+(2*pi*rand()/32767-pi))/(4*M);
a1=2*pi*rand()-pi;
a2=2*pi*rand()-pi;
x=x+c*cos(w*t*cos(a3)+a1);
y=y+c*sin(w*t*sin(a3)+a2);
}
r=sqrt(x*x+y*y)/sqrt(2);
printf("%f\n",r);
}
getchar();
}
在ubuntu下运行 gcc -o SUNO1 SUNO1.c,错误如下:
/tmp/ccAvpfUp.o: In function `main':
SUNO1.c.text+0x6c): undefined reference to `sqrt'
SUNO1.c.text+0x17a): undefined reference to `cos'
SUNO1.c.text+0x18b): undefined reference to `cos'
SUNO1.c.text+0x1aa): undefined reference to `sin'
SUNO1.c.text+0x1b8): undefined reference to `sin'
SUNO1.c.text+0x1ec): undefined reference to `sqrt'
/tmp/ccAvpfUp.o.eh_frame+0x11): undefined reference to `__gxx_personality_v0'
collect2: ld 返回 1
程序二GRAPDB.c:
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <graphics.h>
main()
{ int gdriver,gmode,posi;
double Kdb=-4294967295;
double X,Y,G1,G2,C=1,a,R,K,S,A;
int N=600,i;
K=pow(10.0,(Kdb/10));
a=1/(2*(K+1));
srand((int)time(0));
gdriver=DETECT;
initgraph(&gdriver,&gmode,"c:\\turboc2\\bgi");
setbkcolor(BLUE);
cleardevice();
setcolor(10);
for(i=0;i<N;i++)
{do
{X=1-2.0*rand()/32767;
Y=1-2.0*rand()/32767;
S=X*X+Y*Y;
}
while(S>=1);
G1=X*sqrt(-2*C*C*log(S)/S);
G2=Y*sqrt(-2*C*C*log(S)/S);
R=sqrt(a*((G1+sqrt(2*K))*(G1+sqrt(2*K))+G2*G2));
A=20*log10(R);
posi=240-8*A;
line(i,240,i,posi);
}
getchar();
closegraph();
}
在ubuntu下运行 gcc -o GRAPDB GRAPDB.c,错误如下:
GRAPDB.c:5:22: 错误: graphics.h:没有该文件或目录
GRAPDB.c: In function ‘int main()’:
GRAPDB.c:14: 错误: ‘DETECT’在此作用域中尚未声明
GRAPDB.c:15: 错误: ‘initgraph’在此作用域中尚未声明
GRAPDB.c:16: 错误: ‘BLUE’在此作用域中尚未声明
GRAPDB.c:16: 错误: ‘setbkcolor’在此作用域中尚未声明
GRAPDB.c:17: 错误: ‘cleardevice’在此作用域中尚未声明
GRAPDB.c:18: 错误: ‘setcolor’在此作用域中尚未声明
GRAPDB.c:31: 错误: ‘line’在此作用域中尚未声明
GRAPDB.c:34: 错误: ‘closegraph’在此作用域中尚未声明
程序二中有#include <graphics.h> Linux下好像没有这个库,请问该如何解决?
跪谢各位大侠!!
主要可能是库函数的问题:
程序一SUNO1.c:
#include<time.h>
#include<stdlib.h>
#include<math.h>
#include<stdio.h>
main()
{ int i,M=1024,N=20;
double fm=2000000;
double x,y,pi=3.14,a1,a2,a3,w,c,r,t;
c=sqrt(2/(double)M);
w=2*pi*fm;
srand((int)time(0));
for(t=1;t<N+1;t++)
{x=0,y=0;
for(i=1;i<M+1;i++)
{ a3=(2*pi*i-pi+(2*pi*rand()/32767-pi))/(4*M);
a1=2*pi*rand()-pi;
a2=2*pi*rand()-pi;
x=x+c*cos(w*t*cos(a3)+a1);
y=y+c*sin(w*t*sin(a3)+a2);
}
r=sqrt(x*x+y*y)/sqrt(2);
printf("%f\n",r);
}
getchar();
}
在ubuntu下运行 gcc -o SUNO1 SUNO1.c,错误如下:
/tmp/ccAvpfUp.o: In function `main':
SUNO1.c.text+0x6c): undefined reference to `sqrt'
SUNO1.c.text+0x17a): undefined reference to `cos'
SUNO1.c.text+0x18b): undefined reference to `cos'
SUNO1.c.text+0x1aa): undefined reference to `sin'
SUNO1.c.text+0x1b8): undefined reference to `sin'
SUNO1.c.text+0x1ec): undefined reference to `sqrt'
/tmp/ccAvpfUp.o.eh_frame+0x11): undefined reference to `__gxx_personality_v0'
collect2: ld 返回 1
程序二GRAPDB.c:
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <graphics.h>
main()
{ int gdriver,gmode,posi;
double Kdb=-4294967295;
double X,Y,G1,G2,C=1,a,R,K,S,A;
int N=600,i;
K=pow(10.0,(Kdb/10));
a=1/(2*(K+1));
srand((int)time(0));
gdriver=DETECT;
initgraph(&gdriver,&gmode,"c:\\turboc2\\bgi");
setbkcolor(BLUE);
cleardevice();
setcolor(10);
for(i=0;i<N;i++)
{do
{X=1-2.0*rand()/32767;
Y=1-2.0*rand()/32767;
S=X*X+Y*Y;
}
while(S>=1);
G1=X*sqrt(-2*C*C*log(S)/S);
G2=Y*sqrt(-2*C*C*log(S)/S);
R=sqrt(a*((G1+sqrt(2*K))*(G1+sqrt(2*K))+G2*G2));
A=20*log10(R);
posi=240-8*A;
line(i,240,i,posi);
}
getchar();
closegraph();
}
在ubuntu下运行 gcc -o GRAPDB GRAPDB.c,错误如下:
GRAPDB.c:5:22: 错误: graphics.h:没有该文件或目录
GRAPDB.c: In function ‘int main()’:
GRAPDB.c:14: 错误: ‘DETECT’在此作用域中尚未声明
GRAPDB.c:15: 错误: ‘initgraph’在此作用域中尚未声明
GRAPDB.c:16: 错误: ‘BLUE’在此作用域中尚未声明
GRAPDB.c:16: 错误: ‘setbkcolor’在此作用域中尚未声明
GRAPDB.c:17: 错误: ‘cleardevice’在此作用域中尚未声明
GRAPDB.c:18: 错误: ‘setcolor’在此作用域中尚未声明
GRAPDB.c:31: 错误: ‘line’在此作用域中尚未声明
GRAPDB.c:34: 错误: ‘closegraph’在此作用域中尚未声明
程序二中有#include <graphics.h> Linux下好像没有这个库,请问该如何解决?
跪谢各位大侠!!
- Yizer
- 帖子: 297
- 注册时间: 2007-11-07 14:41
- 来自: 佳木斯
- 联系:
- BigSnake.NET
- 帖子: 12522
- 注册时间: 2006-07-02 11:16
- 来自: 廣州
- 联系:
- BigSnake.NET
- 帖子: 12522
- 注册时间: 2006-07-02 11:16
- 来自: 廣州
- 联系:
- stlxv
- 论坛版主
- 帖子: 8275
- 注册时间: 2006-05-03 0:39
- 来自: المريخ
-
- 帖子: 23
- 注册时间: 2008-05-23 17:23
-
- 帖子: 23
- 注册时间: 2008-05-23 17:23
这篇文章好像和Linux没什么关系吧?stlxv 写了:参考这篇文章,这是最完美的解决方法:
viewtopic.php?t=69330&highlight=
真诚感谢楼上兄弟!
- stlxv
- 论坛版主
- 帖子: 8275
- 注册时间: 2006-05-03 0:39
- 来自: المريخ
这样你的程序就不用修改可以直接用了jqwzz 写了:这篇文章好像和Linux没什么关系吧?stlxv 写了:参考这篇文章,这是最完美的解决方法:
viewtopic.php?t=69330&highlight=
真诚感谢楼上兄弟!
PHP是最好的语言!不服来战!
-
- 帖子: 243
- 注册时间: 2005-09-28 9:03
http://www.svgalib.org/jay/beginners_gu ... guide.htmljqwzz 写了:有svgalib库的具体使用方法介绍吗?网上找了一下,讲得好简单,没有具体的细节性的使用介绍!linser 写了:图形库可以用svgalib
很感谢这位兄台!
-
- 帖子: 23
- 注册时间: 2008-05-23 17:23
感谢这位兄台,svglib库太老了,没有办法安装,请问兄台你安装成功了吗?linser 写了:http://www.svgalib.org/jay/beginners_gu ... guide.htmljqwzz 写了:有svgalib库的具体使用方法介绍吗?网上找了一下,讲得好简单,没有具体的细节性的使用介绍!linser 写了:图形库可以用svgalib
很感谢这位兄台!
-
- 帖子: 243
- 注册时间: 2005-09-28 9:03
sudo apt-get install libsvga1-devjqwzz 写了:感谢这位兄台,svglib库太老了,没有办法安装,请问兄台你安装成功了吗?linser 写了:http://www.svgalib.org/jay/beginners_gu ... guide.htmljqwzz 写了:有svgalib库的具体使用方法介绍吗?网上找了一下,讲得好简单,没有具体的细节性的使用介绍!linser 写了:图形库可以用svgalib
很感谢这位兄台!