当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 10 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 找不到main函数
帖子发表于 : 2007-06-16 18:12 
头像

注册: 2007-04-04 20:05
帖子: 22
地址: dalian
送出感谢: 0 次
接收感谢: 0 次
/usr/lib/gcc/i486-linux-gnu/4.0.3/../../../../lib/crt1.o: In function `_start':../sysdeps/i386/elf/start.S:115: undefined reference to `main'。
编译helloworld.c没有这个问题,
我是编译err.c这个文件时出现这个问题的,这个程序是从unix环境高级编程里抄下来的,不知道编译怎么会出错。难道是因为版本问题吗?


页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2007-06-16 19:19 
头像

注册: 2006-04-12 20:05
帖子: 8495
地址: 杭州
送出感谢: 0 次
接收感谢: 8
要把你的编译的命令写上来。。。


_________________
关注我的blog: ε==3


页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2007-06-18 21:57 
头像

注册: 2007-04-04 20:05
帖子: 22
地址: dalian
送出感谢: 0 次
接收感谢: 0 次
我知道是什么错了,因为这个.c文件里没有main函数, 我直接执行gcc err.c当然不能生成可执行文件。不过我今天有出现了另一个问题。我编了一个hello.c
#include <stdio.h>
int main()
{
printf("hello\n");
return 0;
}
然后在同一目录下:vi makefile
hello: hello.o
gcc -o hello hello.o
hello.o:hello.c
gcc -c hello.c
clean:
rm hello.o
命令我用的是tap键
保存退出
执行make,产生 bash: make: command not found
我已经写了makefile了呀,怎么还会这样


页首
 用户资料  
 
4 楼 
 文章标题 :
帖子发表于 : 2007-06-19 0:26 
头像

注册: 2006-05-19 21:23
帖子: 1277
送出感谢: 0 次
接收感谢: 0 次
有安装 make 么,一般来说安装了 build-essential 软件包比较方便,含了gcc和make等依赖的软件包。

查看 make 软件包安装状态 写道:
$ aptitude show "make"
Package: make
State: installed
Automatically installed: no
Version: 3.81-3build1
Priority: optional
Section: devel
Maintainer: Ubuntu Core Developers <ubuntu-devel-discuss@lists.ubuntu.com>
Uncompressed Size: 1237k
Depends: libc6 (>= 2.5-0ubuntu1)
Suggests: make-doc
Description: The GNU version of the "make" utility.
GNU Make is a program that determines which pieces of a large program need to be recompiled and issues the
commands to recompile them, when necessary. More information about GNU Make can be found in the `make' Info
page. The upstream sources for this package are available at the location ftp://ftp.gnu.org/gnu/make/. The
documentation for this package does not meet the Debian Free Software Guidelines, and has been removed from
this package.


_________________
其实我是一个演员!-http://blog.csdn.net/xport/


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2007-06-19 9:04 
头像

注册: 2007-04-03 9:52
帖子: 353
送出感谢: 0 次
接收感谢: 0 次
是Makefile, M 要大写, 也可以用 make -f makefile 试试


_________________
TODO LIST:
1.valgrind:
2.gcov:
3.cppuint:未在Linux中使用
4.PostgreSQL:unixODBC
5.Doxygen:UTF8 中文问题,生成LaTex文档问题
6.LaTex:明确安装问题,UTF8 中文字体问题


页首
 用户资料  
 
6 楼 
 文章标题 :
帖子发表于 : 2007-06-19 9:15 
头像

注册: 2006-04-12 20:05
帖子: 8495
地址: 杭州
送出感谢: 0 次
接收感谢: 8
恩,没有安装make。


_________________
关注我的blog: ε==3


最后由 bones7456 编辑于 2007-06-19 12:52,总共编辑了 1 次

页首
 用户资料  
 
7 楼 
 文章标题 :
帖子发表于 : 2007-06-19 12:39 
头像

注册: 2005-08-15 0:04
帖子: 1880
地址: 南7技校
送出感谢: 0 次
接收感谢: 0 次
make 查找文件的顺序是 GNUmakefile Makefile 和 makefile.

大写只是一个风格的问题,同时,楼主的问题明显是编译环境的问题。没有 make . xport 说了办法了..


_________________
飞得高,飞得低,学习再学习,多少大秘密!
http://zhan.blog.ubuntu.org.cn


页首
 用户资料  
 
8 楼 
 文章标题 : 问题已经解决,确实是没安装make。谢谢!
帖子发表于 : 2007-06-19 15:58 
头像

注册: 2007-04-04 20:05
帖子: 22
地址: dalian
送出感谢: 0 次
接收感谢: 0 次
首先谢谢前面为我解决问题的人,真心感谢,没想到这里回复的这么快。呵呵,以前的帖子好几天才看到有人回,可能是太弱智了吧。

不过,笨笨的我又碰到一个新问题,在写makefile时,包含头文件,执行make不错,找不到调用函数。
我的程序如下:
hello.c
#include<stdio.h>
#include "mysub.h"
int main()
{
printf("you are now in main process!\n");
func();
return 0;
}

mysub.h
void func();

sub.c
#include<stdio.h>
void func()
{
printf("you are now in sub process!\n");
}

makefile:
hello:hello.o
gcc -o hello hello.o
hello.o:hello.c mysub.h
gcc -c hello.c
hello.c. mysub.h.sub.c放在同一目录下
执行make,在main()函数里找不到func()的定义。
在终端执行gcc hello.c sub.c可以成功,还有,我把函数定义放在mysub.h中执行make可以通过
在包含自己定义的头文件时,makefile 应该怎么写呢?我这是照着老师的课件写的,昨天作实验也没有通过。
希望还有人看这个帖子,谢谢啊。


最后由 caca 编辑于 2007-06-19 17:13,总共编辑了 1 次

页首
 用户资料  
 
9 楼 
 文章标题 :
帖子发表于 : 2007-06-19 16:54 
头像

注册: 2007-04-03 9:52
帖子: 353
送出感谢: 0 次
接收感谢: 0 次
代码:
all:hello
   
hello:hello.o sub.o
   gcc -o hello hello.o sub.o

hello.o:hello.c
   gcc -c hello.c

sub.o:sub.c
   gcc -c sub.c

clean:
   rm *.o hello


或者
代码:
#定议编译器和编译选项, 使用时用${ } 括起来
CC=gcc
CFLAGS=-g

all:hello

# $@    --目标文件
# $^    --所依赖的文件
hello:hello.o sub.o
   ${CC} ${CFLAGS} -o $@ $^
   
# .c .o --建立.c 到.o规则
# $<    --第一个依赖文件
.c .o:
   ${CC} ${CFLAGS} $<

clean:
   rm *.o hello



_________________
TODO LIST:
1.valgrind:
2.gcov:
3.cppuint:未在Linux中使用
4.PostgreSQL:unixODBC
5.Doxygen:UTF8 中文问题,生成LaTex文档问题
6.LaTex:明确安装问题,UTF8 中文字体问题


页首
 用户资料  
 
10 楼 
 文章标题 : 就好了
帖子发表于 : 2007-06-19 17:09 
头像

注册: 2007-04-04 20:05
帖子: 22
地址: dalian
送出感谢: 0 次
接收感谢: 0 次
这样就是把所有的.c源文件都告诉makefile.这样make是可以成功的。
但是,如果这样的话,头文件有什么作用呢?


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 10 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:Google [Bot] 和 2 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译