请问ubuntu下用gcc是否与其它linux不同?我用文本编辑器写的源文件编译不了

时间:2022-02-16 05:44:43
用gedit写了一个hello.c文件,内容如下:
#filename:hello.c
#include
int main(void)
{
printf("hello world");
return 0;
}
我可是照书上的不变写的。是学习REDHAT的书。
下面出错了:
george@george-desktop:~$ gcc /home2/george/hello.c -o hello
/home2/george/hello.c:1:2: 错误: 无效的预处理指示 #filename
/home2/george/hello.c:2:9: 错误: #include 需要 "FILENAME" 或 <FILENAME>
/home2/george/hello.c: 在函数‘main’中:
/home2/george/hello.c:5: 警告: 内建函数 ‘printf’ 不兼容的隐式声明

我把#include改为:#include <stdio.h>也不行:
george@george-desktop:~$ gcc /home2/george/hello.c -o hello
/home2/george/hello.c:1:2: 错误: 无效的预处理指示 #filename
/home2/george/hello.c:2:19: 错误: stdio.h:没有该文件或目录
/home2/george/hello.c: 在函数‘main’中:
/home2/george/hello.c:5: 警告: 内建函数 ‘printf’ 不兼容的隐式声明

21 个解决方案

#1


#filename:hello.c 
#include 
int main(void) 

printf("hello world"); 
return 0; 



====================没有见过这样的c语法。
#include <stdio>

int main(void) 

printf("hello world"); 
return 0; 

#2


#filename 
#include 
有问题

#3


引用 1 楼 wuyu637 的回复:
#filename:hello.c
#include
int main(void)
{
printf("hello world");
return 0;
}


====================没有见过这样的c语法。
#include  <stdio>

int main(void)
{
printf("hello world");
return 0;
}

按你的方法还是一个样啊:
george@george-desktop:~$ gcc /home2/george/hello.c -o hello
/home2/george/hello.c:1:17: 错误: stdio:没有该文件或目录
/home2/george/hello.c: 在函数‘main’中:
/home2/george/hello.c:5: 警告: 内建函数 ‘printf’ 不兼容的隐式声明

#4


#include  <stdio.h> 

int main(void) 

printf("hello world"); 
return 0; 

#5


什么书啊?盗版的?

#6


ubuntu 需要先安装一些东西 

sudo apt-get install build-essential

#7


只要你的C程序遵循了标准C,用任何一个循了标准C的编译器都是可以编译的

#8


估计是电子书吧~~

在盗版也不会盗成这样~~

同志C应该是初学吧~~

继续加油~~~

#9


尽信书不如无书,在写程序的时候必须心里明白程序每个语句的含义,不能照搬

#10


#include  <stdio> 

int main(void) 

printf("hello world"); 
return 0; 


 
上面的方法没错吧,但还是一个样啊: 
george@george-desktop:~$ gcc /home2/george/hello.c -o hello 
/home2/george/hello.c:1:17: 错误: stdio:没有该文件或目录 
/home2/george/hello.c: 在函数‘main’中: 
/home2/george/hello.c:5: 警告: 内建函数 ‘printf’ 不兼容的隐式声明 

#11


引用 8 楼 hotsnow1943 的回复:
估计是电子书吧~~ 

在盗版也不会盗成这样~~ 

同志C应该是初学吧~~ 

继续加油~~~
windows下是老手了,我以为linux下不同,书上那样说的,我就照做喽。

#12


  应该是这样吧:
#include  <stdio.h> 

int main(void) 

printf("hello world"); 
return 0; 

我编译了下,没问题。

#13


c/c++语言本身是跨平台的。gcc在任何平台上基本都是一致的。不一致的只有系统的API。

#14


引用 6 楼 challenge99 的回复:
ubuntu 需要先安装一些东西

sudo apt-get install build-essential
george@george-desktop:~$ sudo apt-get install build-essential
[sudo] password for george: 
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
读取状态信息... 完成             
现在没有可用的软件包 build-essential,但是它被其它的软件包引用了。
这可能意味着这个缺失的软件包可能已被废弃,
或者只能在其他发布源中找到
E: 软件包 build-essential 还没有可供安装的候选者

#15


引用 12 楼 liuyang1943 的回复:
应该是这样吧:
#include   <stdio.h>

int main(void)
{
printf("hello world");
return 0;
}
我编译了下,没问题。

我的却有问题啊:
george@george-desktop:~$ gcc /home2/george/hello.c -o hello
/home2/george/hello.c:1:19: 错误: stdio.h:没有该文件或目录
/home2/george/hello.c: 在函数‘main’中:
/home2/george/hello.c:5: 警告: 内建函数 ‘printf’ 不兼容的隐式声明
是不是一定要把那更新管理器红箭头提示的所有软件包全更新下来才能正常使用gcc?

#16


 先sudo apt-get install build-essential
,然后reboot下,如果还不能解决那我也不知道为什么 了

#17


/home2/george/hello.c:1:19: 错误: stdio.h:没有该文件或目录

这说明头文件都找不到,可能你的环境变量有问题,一般来说是在/usr/include目录下的,你找一下有没有stdio.h这个文件,
如果有的话,那估计就是环境变量的问题了,或者可以

#18


引用 17 楼 hotsnow1943 的回复:
/home2/george/hello.c:1:19: 错误: stdio.h:没有该文件或目录 

这说明头文件都找不到,可能你的环境变量有问题,一般来说是在/usr/include目录下的,你找一下有没有stdio.h这个文件, 
如果有的话,那估计就是环境变量的问题了,或者可以


也可以 gcc /home2/george/hello.c -o hello -I/usr/include 指定查找头文件路径

BTW:如果没有接触过 linux,而又想做 linux 下开发的话
不建议安装 ubuntu,建议安装 fedora 系列,选择安装开发工具选项

#19


Ubuntu 8.04下安装GCC编译器:
http://www.5dlinux.com/article/1/2008/linux_15236.html


方法一:

该方法超简单:
sudo apt-get build-dep gcc

就上面这条命令就可以搞定

方法二:
sudo apt-get install build-essential

还是简单,一句命令也可以搞定

安装完了可以执行
gcc --version

的命令来查看版本,输出如下:

gcc (GCC) 4.2.3 (Ubuntu 4.2.3-2ubuntu7)
Copyright (C) 2007 Free Software Foundation, Inc.

#20


usr/include里面只有一些文件夹。

#21


问题终于得以解决,更改源地址,刷新列表,sudo apt-get install build-essential 
更新完毕就可以了。但新问题来了,见新贴

#1


#filename:hello.c 
#include 
int main(void) 

printf("hello world"); 
return 0; 



====================没有见过这样的c语法。
#include <stdio>

int main(void) 

printf("hello world"); 
return 0; 

#2


#filename 
#include 
有问题

#3


引用 1 楼 wuyu637 的回复:
#filename:hello.c
#include
int main(void)
{
printf("hello world");
return 0;
}


====================没有见过这样的c语法。
#include  <stdio>

int main(void)
{
printf("hello world");
return 0;
}

按你的方法还是一个样啊:
george@george-desktop:~$ gcc /home2/george/hello.c -o hello
/home2/george/hello.c:1:17: 错误: stdio:没有该文件或目录
/home2/george/hello.c: 在函数‘main’中:
/home2/george/hello.c:5: 警告: 内建函数 ‘printf’ 不兼容的隐式声明

#4


#include  <stdio.h> 

int main(void) 

printf("hello world"); 
return 0; 

#5


什么书啊?盗版的?

#6


ubuntu 需要先安装一些东西 

sudo apt-get install build-essential

#7


只要你的C程序遵循了标准C,用任何一个循了标准C的编译器都是可以编译的

#8


估计是电子书吧~~

在盗版也不会盗成这样~~

同志C应该是初学吧~~

继续加油~~~

#9


尽信书不如无书,在写程序的时候必须心里明白程序每个语句的含义,不能照搬

#10


#include  <stdio> 

int main(void) 

printf("hello world"); 
return 0; 


 
上面的方法没错吧,但还是一个样啊: 
george@george-desktop:~$ gcc /home2/george/hello.c -o hello 
/home2/george/hello.c:1:17: 错误: stdio:没有该文件或目录 
/home2/george/hello.c: 在函数‘main’中: 
/home2/george/hello.c:5: 警告: 内建函数 ‘printf’ 不兼容的隐式声明 

#11


引用 8 楼 hotsnow1943 的回复:
估计是电子书吧~~ 

在盗版也不会盗成这样~~ 

同志C应该是初学吧~~ 

继续加油~~~
windows下是老手了,我以为linux下不同,书上那样说的,我就照做喽。

#12


  应该是这样吧:
#include  <stdio.h> 

int main(void) 

printf("hello world"); 
return 0; 

我编译了下,没问题。

#13


c/c++语言本身是跨平台的。gcc在任何平台上基本都是一致的。不一致的只有系统的API。

#14


引用 6 楼 challenge99 的回复:
ubuntu 需要先安装一些东西

sudo apt-get install build-essential
george@george-desktop:~$ sudo apt-get install build-essential
[sudo] password for george: 
正在读取软件包列表... 完成
正在分析软件包的依赖关系树       
读取状态信息... 完成             
现在没有可用的软件包 build-essential,但是它被其它的软件包引用了。
这可能意味着这个缺失的软件包可能已被废弃,
或者只能在其他发布源中找到
E: 软件包 build-essential 还没有可供安装的候选者

#15


引用 12 楼 liuyang1943 的回复:
应该是这样吧:
#include   <stdio.h>

int main(void)
{
printf("hello world");
return 0;
}
我编译了下,没问题。

我的却有问题啊:
george@george-desktop:~$ gcc /home2/george/hello.c -o hello
/home2/george/hello.c:1:19: 错误: stdio.h:没有该文件或目录
/home2/george/hello.c: 在函数‘main’中:
/home2/george/hello.c:5: 警告: 内建函数 ‘printf’ 不兼容的隐式声明
是不是一定要把那更新管理器红箭头提示的所有软件包全更新下来才能正常使用gcc?

#16


 先sudo apt-get install build-essential
,然后reboot下,如果还不能解决那我也不知道为什么 了

#17


/home2/george/hello.c:1:19: 错误: stdio.h:没有该文件或目录

这说明头文件都找不到,可能你的环境变量有问题,一般来说是在/usr/include目录下的,你找一下有没有stdio.h这个文件,
如果有的话,那估计就是环境变量的问题了,或者可以

#18


引用 17 楼 hotsnow1943 的回复:
/home2/george/hello.c:1:19: 错误: stdio.h:没有该文件或目录 

这说明头文件都找不到,可能你的环境变量有问题,一般来说是在/usr/include目录下的,你找一下有没有stdio.h这个文件, 
如果有的话,那估计就是环境变量的问题了,或者可以


也可以 gcc /home2/george/hello.c -o hello -I/usr/include 指定查找头文件路径

BTW:如果没有接触过 linux,而又想做 linux 下开发的话
不建议安装 ubuntu,建议安装 fedora 系列,选择安装开发工具选项

#19


Ubuntu 8.04下安装GCC编译器:
http://www.5dlinux.com/article/1/2008/linux_15236.html


方法一:

该方法超简单:
sudo apt-get build-dep gcc

就上面这条命令就可以搞定

方法二:
sudo apt-get install build-essential

还是简单,一句命令也可以搞定

安装完了可以执行
gcc --version

的命令来查看版本,输出如下:

gcc (GCC) 4.2.3 (Ubuntu 4.2.3-2ubuntu7)
Copyright (C) 2007 Free Software Foundation, Inc.

#20


usr/include里面只有一些文件夹。

#21


问题终于得以解决,更改源地址,刷新列表,sudo apt-get install build-essential 
更新完毕就可以了。但新问题来了,见新贴