免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1360 | 回复: 6
打印 上一主题 下一主题

[系统安装] 关于编译程序运行出错 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-09-03 15:57 |只看该作者 |倒序浏览
请问各位大神,如果编译通过了,可是程序运行出错。应该如何进行调试。而且我此次运行程序出错的原因不知是为什么。废话不多说,直接上问题。

下面为运行时的错误信息:
第一次运行: . ./main
   ksh: 0403-057 Syntax error: `(' is not expected.
重新编译后,第二次运行: . ./main
   ksh: 0403-057 Syntax error: `do' is not expected.

编译的命令
   cc -s funtion.so -c main.c -o main

程序代码:
/*************************************
* name: main.c
* 本程序主要是测试Linux IPC 进程间的通信
*
* time:2014-8-27
*************************************/

#include "pbheader.h"
#include "funtion.h"

int main ()
{
   pid_t pid;

   TELL_WAIT();
  
   if( (pid=fork() ) < 0 )
      ErrorDump("fork","fork error");
   else if (pid == 0 )                     /*  child */
   {
      printf(" do something !\n");
      sleep(5);
      printf("done !\n");
      TELL_PARENT( getppid() );
   }
   else                                   /*  parent */
   {
      WAIT_CHILD();
      printf("I get it \n");
      
   }
   if ( waitpid(pid,NULL,0) != pid )
       ErrorDump("waitpid","error" );

   return 0;
}

最后补充:由于程序写的比较简单,所以核查了多遍没找出问题。才请大神支招

论坛徽章:
0
2 [报告]
发表于 2014-09-04 11:16 |只看该作者
> Syntax error: `(' is not expected
> Syntax error: `do' is not expected.
感觉是 脚本 运行 出现的错误信息, 而不是 可执行文件。 确定 运行的 是一个 可执行文件吗?

一般调试程序需要使用  gdb .
大概用法如下:

$ gdb   ./main
$ run
如果系统crash, 使用 命令
$ backtrace    :  查看 stack.

编译的时候,加上   -g 选项, 生成调试用的符号表。

论坛徽章:
0
3 [报告]
发表于 2014-09-04 11:49 |只看该作者
回复 2# kartorz
恩,生产文件的时候是不可执行文件。可是我想测试其执行的结果,所以自行使用
chmod 755 main   将其可执行了。错误是不是因为这原因?
如果想将生成的不可执行文件,变成可执行文件,有没有办法让它生产可执行文件?
难道是用 cc -s funtion.o -c main.c -g -o main.exe     ##这条命令吗?

   

论坛徽章:
9
寅虎
日期:2014-06-03 14:10:05午马
日期:2015-01-08 16:49:52白羊座
日期:2015-01-16 12:58:182015年迎新春徽章
日期:2015-03-04 09:57:092015元宵节徽章
日期:2015-03-06 15:51:33NBA常规赛纪念章
日期:2015-05-04 22:32:03IT运维版块每日发帖之星
日期:2015-08-04 06:20:0015-16赛季CBA联赛之北京
日期:2015-12-14 09:40:0315-16赛季CBA联赛之青岛
日期:2016-07-25 11:23:07
4 [报告]
发表于 2014-09-04 17:00 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽

论坛徽章:
0
5 [报告]
发表于 2014-09-05 08:45 |只看该作者
追问一下,如果用自己写的Makefile 最后生产的main是不可执行文件。是不是因为这个main只是编译了,并没有链接?生成最终可执行文件?

论坛徽章:
0
6 [报告]
发表于 2014-09-05 09:51 |只看该作者
linux 下面的 可执行文件,不是 exe格式, 是ELF格式,不需要 .exe后缀。

>cc -s funtion.o -c main.c -g -o main.exe
-c 的意思是不要 link, 所以没有生成 可执行文件。

简单一点直接使用  
$  gcc -o main   main.c  function.o
或者  
$ gcc -o main   main.c  function.c

编译生成后, main  会有可执行权限, 不需要使用 chmod 来更改。

论坛徽章:
224
2022北京冬奥会纪念版徽章
日期:2015-08-10 16:30:32操作系统版块每日发帖之星
日期:2016-02-18 06:20:00操作系统版块每日发帖之星
日期:2016-03-01 06:20:00操作系统版块每日发帖之星
日期:2016-03-02 06:20:0015-16赛季CBA联赛之上海
日期:2019-09-20 12:29:3219周年集字徽章-周
日期:2019-10-01 20:47:4815-16赛季CBA联赛之八一
日期:2020-10-23 18:30:5320周年集字徽章-20	
日期:2020-10-28 14:14:2615-16赛季CBA联赛之广夏
日期:2023-02-25 16:26:26CU十四周年纪念徽章
日期:2023-04-13 12:23:1015-16赛季CBA联赛之四川
日期:2023-07-25 16:53:45操作系统版块每日发帖之星
日期:2016-05-10 19:22:58
7 [报告]
发表于 2014-09-07 22:56 |只看该作者
这个随便找个研发项目去实习锻炼一下就会了
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP