移植LINUX当男程序员遇到问题时时遇到的问题,求助,

linux Gateway 移植的各种问题,求大神们解决 - ZigBee技术 - 德州仪器在线技术支持社区
linux Gateway 移植的各种问题,求大神们解决
发表于2年前
<input type="hidden" id="hGroupID" value="43"
各位大神:&/p>
&p>我在移植&a href=&.cn/tool/cn/Z-Stack& target=&extwin&>Z-Stack&/a> linux Gateway到我的ARM9G20平台的时候遇到一些问题还请大神们给一些解决的方法,&/p>
&p>1、./zigbeeHAgw bbb 不能运行&/p>
&p>/&a href=&.cn/tool/cn/Z-Stack& target=&extwin&>Z-Stack&/a>_Linux_Gateway-1.0.1/&a href=&.cn/tool/cn/z-stack& target=&extwin&>z-stack&/a>_linux_gateway_arm_binaries/servers # ./zigb&/p>
&p>eeHAgw bbb&/p>
&p>-/bin/sh: ./zigbeeHAgw: not found&/p>
&p>我找到的解决的方法是进入zigbeeHAgw 里面把/bin/bash 改成 /bin/sh但是再次运行&/p>
&p>&./zigbeeHAgw bbb 但是又会报&/p>
&p>&line 1: syntax error: unexpected word (expecting &)&) 这样的错误&/p>
&p>运行 ./start_application同样报相同的错误&/p>
&p>/&a href=&.cn/tool/cn/Z-Stack& target=&extwin&>Z-Stack&/a>_Linux_Gateway-1.0.1/&a href=&.cn/tool/cn/z-stack& target=&extwin&>z-stack&/a>_linux_gateway_arm_binaries/servers # ./star&/p>
&p>t_application&/p>
&p>Starting application&/p>
&p>../app/main.bin: line 1: syntax error: unexpected word (expecting &)&)&/p>
&p>Done&/p>
&p>我查看了相关文件的属性(见附件),似乎没有什么不妥&/p>
&p>后来看相关文档说makefile CFLAGS 中多了一个选项-c ,所以我的demo project 下面makefile修改&/p>
&p>CFLAGS= -c -Wall -march=armv4t -g &-std=gnu99 改成CFLAGS= -Wall -march=armv4t -g &-std=gnu99&/p>
&p>重新make,但是会爆以下错误&/p>
&p>undefined reference to &ds_init&&/p>
&p>undefined reference to &ui_init&&/p>
&p>undefined reference to &si_init&&/p>
&p>undefined reference to &polling_process_init&&/p>
&p>undefined reference to &si_deinit&&/p>
&p>undefined reference to &ui_deinit&&/p>
&p>这下我就暂时没辙了,求大神帮忙!详细的错误截图见附件!&/p>
&p>&div style=&clear:&>&/div>" />
linux Gateway 移植的各种问题,求大神们解决
此问题尚无答案
All Replies
各位大神:
我在移植 linux Gateway到我的ARM9G20平台的时候遇到一些问题还请大神们给一些解决的方法,
1、./zigbeeHAgw bbb 不能运行
/_Linux_Gateway-1.0.1/_linux_gateway_arm_binaries/servers # ./zigb
eeHAgw bbb
-/bin/sh: ./zigbeeHAgw: not found
我找到的解决的方法是进入zigbeeHAgw 里面把/bin/bash 改成 /bin/sh但是再次运行
&./zigbeeHAgw bbb 但是又会报
&line 1: syntax error: unexpected word (expecting &)&) 这样的错误
运行 ./start_application同样报相同的错误
/_Linux_Gateway-1.0.1/_linux_gateway_arm_binaries/servers # ./star
t_application
Starting application
../app/main.bin: line 1: syntax error: unexpected word (expecting &)&)
我查看了相关文件的属性(见附件),似乎没有什么不妥
后来看相关文档说makefile CFLAGS 中多了一个选项-c ,所以我的demo project 下面makefile修改
CFLAGS= -c -Wall -march=armv4t -g &-std=gnu99 改成CFLAGS= -Wall -march=armv4t -g &-std=gnu99
重新make,但是会爆以下错误
undefined reference to &ds_init&
undefined reference to &ui_init&
undefined reference to &si_init&
undefined reference to &polling_process_init&
undefined reference to &si_deinit&
undefined reference to &ui_deinit&
这下我就暂时没辙了,求大神帮忙!详细的错误截图见附件!
You have posted to a forum that requires a moderator to approve posts before they are publicly available.
状元56746分
可能是你们平台上运行的limux系统的问题
如果要上传ZigBee Sniffer Log,请把文件另外为psd或者cubx文件,用附件方式上传,不要使用截图没有任何作用。
You have posted to a forum that requires a moderator to approve posts before they are publicly available.千里之行 始于足下
欢迎加入我们,一同切磋技术。 &
用户名: &&&
密 码: &
共有 2351 人关注过本帖
标题:求助高手帮助移植C程序.linux移植到windows.内有源码
等 级:新手上路
结帖率:100%
&&已结贴√
&&问题点数:20&&回复次数:5&&&
求助高手帮助移植C程序.linux移植到windows.内有源码
我是新人,最近在linux下编写了一款游戏的ip转发程序,用来实现多个服务器在线人数合计的,一个小程序.现在需要把他运行在windows平台下,发现头文件和linux的完全不兼容,修改了几天,没有进展.前来求助论坛的大神们,有没有办法可以让我这个小程序运行在windows下.小弟感激不尽.
下面附上源码:
程序代码:#include &sys/types.h&
#include &sys/socket.h&
#include &sys/un.h&
#include &sys/time.h&
#include &sys/ioctl.h&
#include &sys/resource.h&
#include &pthread.h&
#include &netinet/in.h&
#include &arpa/inet.h&
#include &unistd.h&
#include &signal.h&
#include &stdio.h&
#include &stdlib.h&
#include &string.h&
#include &errno.h&
#include &fcntl.h&
#include &ev.h&
#define BACKLOG 256
#define MAXLEN 1024
struct ev_portfw
&&& struct ev_io *ev_
&&& unsigned long ip_
volatile long
struct ev_thread
&&& char *
&&& char motd[<font color=#];
// 设置socket为非阻塞式
void SetNonBlocking(int fd)
&&& int flags = fcntl(fd, F_GETFL);
&&& flags |= O_NONBLOCK;
&&& fcntl(fd, F_SETFL, flags);
void SetOption(int s, int level, int optname, const void *optval, socklen_t optlen)
&&& if (setsockopt(s, level, optname, optval, optlen) & <font color=#)
&&&&&&&&perror(strerror(errno));
void release(struct ev_loop *loop, ev_io *w)
&&& struct ev_portfw *
&&& pf = w-&
&&& ev_io_stop(loop, pf-&ev_listen);
&&& close(pf-&ev_listen-&fd);
&&& free(pf-&ev_listen);
&&& free(pf);
int getserver(char *server, char *motd, int *motdlen, int *user, int *maxuser)
&&& char server_ip[<font color=#];
&&& int port = <font color=#;
&&& char *p;
&&& if (NULL==(p=strstr(server,&:&))) return <font color=#;
&&& memset(server_ip, <font color=#, sizeof(server_ip));
&&& memcpy(server_ip, server, p-server);
&&& port = atoi(p+<font color=#);
&&& int connect_
&&& if((connect_fd=socket(AF_INET,SOCK_STREAM,<font color=#))==-<font color=#)
&&&&&&&&perror(strerror(errno));
&&&&&&&&return <font color=#;
&&& int nReuseAddr = <font color=#;
&&& SetOption(connect_fd, SOL_SOCKET, SO_REUSEADDR, &nReuseAddr, sizeof(int));
&&& struct sockaddr_in s_
&&& bzero(&s_in, sizeof(s_in));
&&& s_in.sin_family = AF_INET;
&&& s_in.sin_port = htons(port);
&&& s_in.sin_addr.s_addr = inet_addr(server_ip);
&&& if (connect(connect_fd, (struct sockaddr *)&s_in,sizeof(struct sockaddr)) & <font color=#)
&&&&&&&&printf(&connect to server failure\n&);
&&&&&&&&perror(strerror(errno));
&&&&&&&&close(connect_fd);
&&&&&&&&return <font color=#;
&&& unsigned char buf[<font color=#8];
&&& buf[<font color=#] = <font color=#xfe;
&&& if (send(connect_fd, buf, <font color=#, <font color=#) != <font color=#)
&&&&&&&&printf(&send packet to server failure\n&);
&&&&&&&&perror(strerror(errno));
&&&&&&&&close(connect_fd);
&&&&&&&&return <font color=#;
&&& int recvlen = recv(connect_fd, buf, sizeof(buf), <font color=#);
&&& if (recvlen &= <font color=#)
&&&&&&&&printf(&recv packet from server failure\n&);
&&&&&&&&perror(strerror(errno));
&&&&&&&&close(connect_fd);
&&&&&&&&return <font color=#;
&&& close(connect_fd);
&&& int len = htons(*(unsigned short *)(buf+<font color=#));
&&& *motdlen = <font color=#;
&&& for (i=<font color=#; i& i++)
&&&&&&&&motd[i-<font color=#] = buf[i];
&&&&&&&&if (buf[i] == <font color=#x00 && buf[i+<font color=#] == <font color=#xa7){
&&&&&&&&&&&&*motdlen = i-<font color=#;
&&&&&&&&&&&&break;
&&& if (*motdlen == <font color=#)
&&&&&&&&printf(&get motd len error\n&);
&&&&&&&&return <font color=#;
&&& *user = <font color=#;
&&& *maxuser = <font color=#;
&&& int mod = <font color=#;
&&& for (i=<font color=#+*motdlen+<font color=#; i& i+=<font color=#)
&&&&&&&&if (mod == <font color=#)
&&&&&&&&&&&&*user = *user * <font color=# + buf[i]-<font color=#;
&&&&&&&&}else
&&&&&&&&&&&&*maxuser = *maxuser * <font color=# + buf[i]-<font color=#;
&&&&&&&&if (buf[i+<font color=#] == <font color=#x00 && buf[i+<font color=#] == <font color=#xa7){
&&&&&&&&&&&&mod++;
&&&&&&&&&&&&i+=<font color=#;
&&& printf(&Server: %s&&Port: %d&&user: %d&&max: %d\n&, server_ip, port, *user, *maxuser);
&&& return <font color=#;
void send_ping(int sock, char *motd, int motdlen, int user, int maxuser)
&&& unsigned char buf[<font color=#8];
&&& char szuser[<font color=#];
&&& char szmaxuser[<font color=#];
&&& int extlen = <font color=#;
&&& int userlen = <font color=#;
&&& int maxuserlen = <font color=#;
&&& sprintf(szuser, &%d&, user);
&&& userlen = strlen(szuser);
&&& extlen+=
&&& sprintf(szmaxuser, &%d&, maxuser);
&&& maxuserlen = strlen(szmaxuser);
&&& extlen+=
&&& buf[<font color=#] = <font color=#xff;
&&& *(unsigned short *)(buf+<font color=#) = htons(motdlen/<font color=# + <font color=# + extlen);
&&& memcpy(buf+<font color=#, motd, motdlen);
&&& buf[motdlen+<font color=#] = <font color=#x00;
&&& buf[motdlen+<font color=#+<font color=#] = <font color=#xa7;
&&& for (i=<font color=#;i&i++)
&&&&&&&&buf[motdlen+<font color=#+i*<font color=#] = <font color=#;
&&&&&&&&buf[motdlen+<font color=#+i*<font color=#+<font color=#] = szuser[i];
&&& buf[motdlen+userlen*<font color=#+<font color=#] = <font color=#x00;
&&& buf[motdlen+userlen*<font color=#+<font color=#] = <font color=#xa7;
&&& for (i=<font color=#;i&i++)
&&&&&&&&buf[motdlen+userlen*<font color=#+<font color=#+i*<font color=#] = <font color=#;
&&&&&&&&buf[motdlen+userlen*<font color=#+<font color=#+i*<font color=#+<font color=#] = szmaxuser[i];
&&& send(sock, buf, motdlen+extlen*<font color=# + <font color=#, <font color=#);
void *get_routine(void *parg)
&&& struct ev_thread *arg =
&&& rc = getserver(arg-&server, arg-&motd, &arg-&motdlen, &arg-&user, &arg-&maxuser);
&&& if (rc == <font color=#)
&&&&&&&&arg-&ok = <font color=#;
&&& __sync_add_and_fetch(&count, <font color=#);
void on_recv(struct ev_loop *loop, ev_io *w, int revents)
&&& struct ev_portfw *
&&& pf = w-&
&&&char szaddr[<font color=#];
&&&struct in_
&&& unsigned char buffer[<font color=#4]={<font color=#};
&&& int ret =<font color=#;
&&& //ev_io write_
&&& ret=recv(w-&fd,buffer,MAXLEN,<font color=#);
&&& if(ret & <font color=#)
&&&&&&&&if (buffer[<font color=#] == <font color=#xFE)
&&&&&&&&&&&&char *
&&&&&&&&&&&&int
&&&&&&&&&&&&int totaluser = <font color=#;
&&&&&&&&&&&&int totalmax = <font color=#;
&&&&&&&&&&&&int *
&&&&&&&&&&&&int *
&&&&&&&&&&&&user = (int *)malloc(sizeof(int)*(m_argc-<font color=#));
&&&&&&&&&&&&maxuser = (int *)malloc(sizeof(int)*(m_argc-<font color=#));
&&&&&&&&&&&&int
&&&&&&&&&&&&
&&&&&&&&&&&&struct ev_thread *
&&&&&&&&&&&&arg = (struct ev_thread *)malloc(sizeof(struct ev_thread)*(m_argc-<font color=#));
&&&&&&&&&&&&
&&&&&&&&&&&&count = <font color=#;
&&&&&&&&&&&&pthread_attr_
&&&&&&&&&&&&pthread_attr_init (&attr);
&&&&&&&&&&&&for (i=<font color=#;i&m_i++)
&&&&&&&&&&&&{
&&&&&&&&&&&&&&& pthread_
&&&&&&&&&&&&&&& pthread_attr_setdetachstate (&attr, PTHREAD_CREATE_DETACHED);
&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& arg[i-<font color=#].ok = <font color=#;
&&&&&&&&&&&&&&& arg[i-<font color=#].user = <font color=#;
&&&&&&&&&&&&&&& arg[i-<font color=#].maxuser = <font color=#;
&&&&&&&&&&&&&&& arg[i-<font color=#].server = m_argv[i];
&&&&&&&&&&&&&&& arg[i-<font color=#].motdlen = &
&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&& pthread_create(&thread, &attr, get_routine, &arg[i-<font color=#]);
&&&&&&&&&&&&}
&&&&&&&&&&&&
&&&&&&&&&&&&time_t st = time(NULL);
&&&&&&&&&&&&
&&&&&&&&&&&&while (count & m_argc - <font color=# && time(NULL)-st & <font color=#)
&&&&&&&&&&&&{
&&&&&&&&&&&&&&& usleep(<font color=#0);&&& //sleep 1ms
&&&&&&&&&&&&}
&&&&&&&&&&&&
&&&&&&&&&&&&for (i=<font color=#;i&m_argc-<font color=#;i++)
&&&&&&&&&&&&{
&&&&&&&&&&&&&&& if (arg[i].ok)
&&&&&&&&&&&&&&& {
&&&&&&&&&&&&&&&&&&&&motd = arg[i].
&&&&&&&&&&&&&&&&&&&&motdlen = arg[i].
&&&&&&&&&&&&&&& }
&&&&&&&&&&&&&&& totaluser+=arg[i].
&&&&&&&&&&&&&&& totalmax+=arg[i].
&&&&&&&&&&&&}
&&&&&&&&&&&&
&&&&&&&&&&&&send_ping(w-&fd, motd, motdlen, totaluser, totalmax);
//&&&&&&&&&&&&send(w-&fd, init, init_len, 0);
&&&&&&&&release(loop, w);
&&& else if(ret ==<font color=#)
&&&&&&&&printf(&listen socket closed!socket fd: %d\n&,w-&fd);
&&&&&&&&release(loop, w);
&&&&&&&&return;
&&&&&&&&if(errno == EAGAIN ||errno == EWOULDBLOCK)
&&&&&&&&&&&&goto
&&&&&&&&else
&&&&&&&&&&&&printf(&ret :%d ,server close socket fd : %d\n&,ret,w-&fd);
&&&&&&&&&&&&release(loop, w);
&&&&&&&&&&&&return;
void on_accept(struct ev_loop *loop, ev_io *w, int revents)
&&& struct sockaddr_
&&& struct ev_portfw *
&&& ev_io* accept_
&&& socklen_t addrlen = sizeof(struct sockaddr);
&&& while ((newfd = accept(w-&fd, (struct sockaddr *)&sin, &addrlen)) & <font color=#)
&&&&&&&&if (errno == EAGAIN || errno == EWOULDBLOCK)
&&&&&&&&&&&&//these are transient, so don't log anything.
&&&&&&&&&&&&continue;
&&&&&&&&else
&&&&&&&&&&&&printf(&accept error.[%s]\n&, strerror(errno));
&&&&&&&&&&&&break;
&&& pf = malloc(sizeof(struct ev_portfw));
&&& pf-&connected = <font color=#;
&&& pf-&ip_addr = sin.sin_addr.s_
&&& accept_watcher=malloc(sizeof(ev_io));
&&& accept_watcher-&data =
&&& pf-&ev_listen = accept_
&&& ev_io_init(accept_watcher,on_recv,newfd,EV_READ);
&&& ev_io_start(loop,accept_watcher);
void usage()
&&& printf(&Usage:\n&&portfw &Listen Port& &Server address&:&Server Port& ...\n\n&);
&&& exit(<font color=#);
int main(int argc, char *argv[])
&&& struct ev_loop *loop = EV_DEFAULT;
&&& struct ev_io ev_
&&& int listen_
&&& struct sockaddr_in server_
&&& struct
&&& /* set max limit */
&&& rt.rlim_max = rt.rlim_cur = <font color=#36;
&&& if (setrlimit(RLIMIT_NOFILE, &rt) == -<font color=#) {
&&&&&&perror(&setrlimit&);
&&&&&&exit(<font color=#);
&&&&&&&&fprintf(stdout,&set rlimit success: %d\n&,<font color=#36);
&&& m_argv =
&&& m_argc =
&&& if (argc & <font color=# || atoi(argv[<font color=#])==<font color=#)
&&&&&&&&usage();
&&& printf(&\e[32mListen port: %d \e[0m\n&, atoi(argv[<font color=#]));
&&& if((listen_fd=socket(AF_INET,SOCK_STREAM,<font color=#))==-<font color=#)
&&&&&&&&perror(strerror(errno));
&&&&&&&&exit(-<font color=#);
&&& printf(&socket ok\n&);
&&& int nReuseAddr = <font color=#;
&&& //设置socket选项,允许重用本地地址
&&& SetOption(listen_fd, SOL_SOCKET, SO_REUSEADDR, &nReuseAddr, sizeof(int));
&&& memset(&server_addr,<font color=#,sizeof(server_addr));
&&& server_addr.sin_family = AF_INET;
&&& server_addr.sin_port = htons(atoi(argv[<font color=#]));
&&& server_addr.sin_addr.s_addr = INADDR_ANY;
&&& if(bind(listen_fd,(struct sockaddr*)&server_addr,sizeof(struct sockaddr))==-<font color=#)
&&&&&&&&perror(strerror(errno));
&&&&&&&&exit(-<font color=#);
&&& if(listen(listen_fd,BACKLOG)==-<font color=#)
&&&&&&&&perror(strerror(errno));
&&&&&&&&exit(-<font color=#);
&&& SetNonBlocking(listen_fd);
&&& printf(&start listen\n&);
&&& ev_io_init (&ev_accept, on_accept, listen_fd, EV_READ);
&&& ev_io_start (loop, &ev_accept);
&&& ev_loop(loop,<font color=#);
&&& ev_loop_destroy(loop);
&&& return <font color=#;
-----------------------------分割线-----------------------------------------
以下是Makefile,虽然我知道应该和他没关系,以防万一,贴出来...拜托大家了
程序代码:
IDIR=/usr/include
LDIR=/usr/lib
OBJS=portfw.c
CFLAGS=-c -g -Wall -march=i686
LDFLAGS=-O3 -D_FILE_OFFSET_BITS=<font color=# -lev -lpthread
TARGET=portfw
all: $(TARGET)
&&& @echo done.
$(TARGET): $(OBJS)
&&& $(CC) $(LDFLAGS) -L$(LDIR) -I$(IDIR) $(OBJS) -o $@
&&& $(CC) $(CFLAGS) -o $@ $&
&&& $(CC) $(CFLAGS) -o $@ $&
&&& rm *.o -f
&&& rm $(TARGET) -f
&&& cp $(TARGET) /usr/local/sbin/$(TARGET)
[ 本帖最后由 gujie007 于
17:59 编辑 ]
搜索更多相关主题的帖子:
来 自:四川
等 级:贵宾
威 望:37
帖 子:2011
专家分:5959
用的是什么库?这个库是不是跨平台的?如果不是,那么在平台不兼容的代码中加上了预编译条件没有?Make可以移植,你可以在Windows上用gcc试试,如果不行,那么就是Linux上的套接字和Windows上是不一样的,那么你要在你的代码中加上预编译,不然你可以用Java试试。
My life is brilliant
来 自:北京
等 级:贵宾
威 望:94
帖 子:6779
专家分:16751
额……移植问题……
以前很感兴趣的,不过后来没时间研究,慢慢也就淡忘了。
在 windows 下编译 POSIX 的东西好像不是那么容易的。我大概看了看,你用的这些头文件即使有 mingw 环境可能也凑不齐。
我一直也没研究相关的东西。你可以自己查查这方面的资料,我随便搜了两个,也没仔细看,也许有对你有用的。
http://www.ylmf.net/windows/win7/tips/9.html
/blog/archives/255
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
因为win下网络编程也用的是那个伯克利的那套模型 在接口上一致性挺高的 移植不难
可是罢 代码挺长 要帮你弄恐怕要有好心人才行。。
等 级:新手上路
我把linux下的头文件搬到windows下了,依然不行....有没有高手帮我改一下.我愿意出钱,联系方式QQ:
来 自:北京
等 级:贵宾
威 望:94
帖 子:6779
专家分:16751
只靠搬头文件肯定是不行的。
都说可以在 windows 下编译 POSIX 的代码,只是需要一些准备工作。你没有查查相关的东西吗?
或者你就真是得移植你的代码了,那得改不少东西。如果不熟悉 windows 的那套玩意,一时半会还下不了手。
版权所有,并保留所有权利。
Powered by , Processed in 0.073336 second(s), 7 queries.
Copyright&, BCCN.NET, All Rights Reserved1103人阅读
&&& 这些日子,负责将199几年的fortran77&#26684;式的六个fortran计算处理程序从windows下cvf编译运行的,通过修改但不能违背源程序功能的原则下将其移植到linux下,我选择了gfortran作为linux下的编译器,本来我想用g77编译器,毕竟同属老一代的。但发现g77编译器对fortran的open函数不能设置高低字节顺序,即它不识别open函数的CONVERT='BIG_ENDIAN'的参数。而且我所安装的ubuntu默认的是低字节在前。因此我选择了gfortran作为我的fortran编译器;下面记录下我在编译过程中主要遇到的问题以及自己给出的解决办法,为自己以后遇到同样的问题提供参考。
&&& 1,fortran语言的隐含类型声明;
隐含约定:I-N规则
  凡是以字母I,J,K,L,M,N六个字母开头的,即认为是整型变量,其它为实型变量。在cvf中不知道为什么,一些变量以I开头(即默认为整型数据类型)用data语句赋&#20540;为字节的字符串,比如:DATA NAMEI/'DEN ','CN ','GR& ','RT& ','RX '/即将整型数组赋&#20540;为NAMEI(1)=DEN,.....;在cvf中是允许的,只不过编译器自动转换ascii码,而这个转换挺有意思的,它首先取出16(2字节整型)因为是高字节在前,低字节在后;前8位表示C的ascii&#20540;,后八位表示N的ascii&#20540;。合起来的16位在转换为整数,就是NAMEI(1)=‘CN’的真正&#20540;。如果是CONVERT='LITTLE_ENDIAN,则是另一个&#20540;了,这也是为什么字节顺序在这里如此重要了。而gfortran不支持这种转换,它直接抛出类型不符的编译错误。而这样的赋&#个而且每个都是上百的二维数组。当时要么改类型,要么改&#20540;;即将NAMEI声明为character型或者按照cvf的转换方法,把每个&#20540;算出来,重新赋&#20540;。如果改类型的话,那么整个程序用了这个变量的语句就都要修改,而且如果它进行运算的话,那连着与它进行运算的变量也要改动,还不如重写程序,但是这个程序是涉及专业领域的,自己能力不够,于是采取第二中方法,幸好我用cvf下的调试器把每个变量的&#20540;都显示出来,然后对着变量一一修改,虽然笨。但总算解决了。
&&& 2,fortran局部变量的save属性
&&&&& 在cvf中每个子例程的局部变量默认save属性为true,而gfortran则不一样,因此每次进入子例程,gfortran给局部变量一个随机&#20540;,运行就会出现段错误,找到原因就很好解决了,找到那个子例程,在子例程名后一行添上SAVE就行了。这个虽然容易,但当时不知道,硬是费了一番功夫。
其他的一些语法上的不同,就不细说了,总之编译器怎么提示你的,你就顺着它的意思,然后对比它们的语法&#26684;式修改就行了,有些时候也可添加一些过渡语句(只要不影响程序的功能就行),这些很好解决,书上,网上的参考资料很多。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:486488次
积分:5950
积分:5950
排名:第4819名
原创:126篇
转载:219篇
评论:20条
(1)(6)(2)(12)(11)(3)(5)(7)(6)(9)(5)(3)(6)(7)(16)(6)(6)(9)(9)(19)(14)(15)(15)(16)(43)(24)(36)(18)(7)(6)(1)(1)(3)(1)(2)(1)
(window.slotbydup = window.slotbydup || []).push({
id: '4740887',
container: s,
size: '250,250',
display: 'inlay-fix'2015年3月 Linux/Unix社区大版内专家分月排行榜第二2014年12月 Linux/Unix社区大版内专家分月排行榜第二2014年11月 Linux/Unix社区大版内专家分月排行榜第二2014年9月 Linux/Unix社区大版内专家分月排行榜第二2014年8月 Linux/Unix社区大版内专家分月排行榜第二2014年7月 Linux/Unix社区大版内专家分月排行榜第二2014年5月 Linux/Unix社区大版内专家分月排行榜第二2014年4月 Linux/Unix社区大版内专家分月排行榜第二
2014年3月 Linux/Unix社区大版内专家分月排行榜第三
2015年3月 Linux/Unix社区大版内专家分月排行榜第二2014年12月 Linux/Unix社区大版内专家分月排行榜第二2014年11月 Linux/Unix社区大版内专家分月排行榜第二2014年9月 Linux/Unix社区大版内专家分月排行榜第二2014年8月 Linux/Unix社区大版内专家分月排行榜第二2014年7月 Linux/Unix社区大版内专家分月排行榜第二2014年5月 Linux/Unix社区大版内专家分月排行榜第二2014年4月 Linux/Unix社区大版内专家分月排行榜第二
2014年3月 Linux/Unix社区大版内专家分月排行榜第三
匿名用户不能发表回复!|
每天回帖即可获得10分可用分!小技巧:
你还可以输入10000个字符
(Ctrl+Enter)
请遵守CSDN,不得违反国家法律法规。
转载文章请注明出自“CSDN(www.csdn.net)”。如是商业用途请联系原作者。}

我要回帖

更多关于 当男程序员遇到问题时 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信