|
小弟是一菜鸟,在TC下编写了个C程序,请各位大虾指点一下如何将其在linux下编译通过并运行?
主要可能是库函数的问题:
程序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下好像没有这个库,请问该如何解决?
需要换函数库吗?如何修改代码?
跪谢各位大侠!! |
|