Linux下常见的编译问题
来源:互联网 发布:文件管理系统源码下载 编辑:程序博客网 时间:2024/05/24 02:51
错误提示:Makefile:2: *** 遗漏分隔符 。 停止。
原因makefile中 gcc语句前 缺少一个 tab分割符
错误提示: bash: ./makefile: 权限不够
原因 makefile 是文本文件不可执行,即使是root,也会权限不够
我们应该在命令行下使用make, 该指令会自动搜寻所在目录下的makefile文件,如果使用其他名称如(makefile.am)则应加参数指出,如:make -f makefile.am
错误提示 : a.c:6: 错误:程序中有游离的 ‘\200’
a.c:6: 错误:程序中有游离的 ‘\200’
a.c:8: 错误:程序中有游离的 ‘\343’
a.c:8: 错误:程序中有游离的 ‘\200’
a.c:8: 错误:程序中有游离的 ‘\200’
原因
这个错误一般是由于你程序(a.c)中使用了中文的标点符号,比如;,},+。
改成英文的就行了。
甚至有时候空格也会出现类似错误,删掉该空格 重新输入。
如果找不出来,解决的办法就是关闭中文输入法然后把有错这一行重新敲一遍。
错误 提示 :
0警告:隐式声明与内建函数 ‘printf’ 不兼容
1 警告: 隐式声明与内建函数 ‘malloc’ 不兼容
2警告: 隐式声明与内建函数 ‘exit’ 不兼容
3警告:隐式声明与内建函数 ‘execlp’ 不兼容
4警告:隐式声明与内建函数 ‘strlen’ 不兼容
5 错误:‘FILE’ 未声明 (//使用 fopen)
解决方法:
加上头文件
0#include "stdio.h"
1#include <malloc.h>
2#include <stdlib.h>
3#include <unistd.h>
4#include <string.h>
5#include <stdio.h>
C类型字符串 后面有一个 '\0 ' 作为 结尾标示符隐含加入。
sizeof(a) 就包括了 '\0 '
而strlen(a) 没有将 '\0 '计算在内。
错误:‘O_RDONLY’ 未声明
来源 fd = open("test.file", O_RDONLY);
解决:
#include <fcntl.h>
int open(const char *pathname, int oflag, ... /* mode_t mode */);
语法参考:http://baike.baidu.com/view/26337.htm
区别于:
#include<stdio.h>
FILE * fopen(const char * path,const char * mode);
语法参考:http://baike.baidu.com/view/656681.htm
错误:‘CLONE_VM’ 未声明
错误:‘CLONE_FILES’ 未声明
来源: 使用clone时候 clone(do_something, child_stack, CLONE_VM|CLONE_FILES, NULL);
解决: #include <sched.h>
错误:‘pid_t’ 未声明
来源: /*定义子进程号 */ pid_t pid;
解决:
#include <stdlib.h>
错误:‘options’ 的存储大小未知
来源 : union semun options; http://dev.yesky.com/199/7643199_1.shtml
原因: semun定义问题
/usr/include/linux/ipc.h 中有定义
但是 /usr/include/sys/ipc.h 中没有
而通常程序会包含 sys/ipc.h sys/sem.h 不可能去包含 linux/ipc.h, linux/sem.h, 否则不可能在unix 下通过
解决:
union semun {
int val;
struct semid_ds *buf;
ushort *array;
}arg;
原因makefile中 gcc语句前 缺少一个 tab分割符
错误提示: bash: ./makefile: 权限不够
原因 makefile 是文本文件不可执行,即使是root,也会权限不够
我们应该在命令行下使用make, 该指令会自动搜寻所在目录下的makefile文件,如果使用其他名称如(makefile.am)则应加参数指出,如:make -f makefile.am
错误提示 : a.c:6: 错误:程序中有游离的 ‘\200’
a.c:6: 错误:程序中有游离的 ‘\200’
a.c:8: 错误:程序中有游离的 ‘\343’
a.c:8: 错误:程序中有游离的 ‘\200’
a.c:8: 错误:程序中有游离的 ‘\200’
原因
这个错误一般是由于你程序(a.c)中使用了中文的标点符号,比如;,},+。
改成英文的就行了。
甚至有时候空格也会出现类似错误,删掉该空格 重新输入。
如果找不出来,解决的办法就是关闭中文输入法然后把有错这一行重新敲一遍。
错误 提示 :
0警告:隐式声明与内建函数 ‘printf’ 不兼容
1 警告: 隐式声明与内建函数 ‘malloc’ 不兼容
2警告: 隐式声明与内建函数 ‘exit’ 不兼容
3警告:隐式声明与内建函数 ‘execlp’ 不兼容
4警告:隐式声明与内建函数 ‘strlen’ 不兼容
5 错误:‘FILE’ 未声明 (//使用 fopen)
解决方法:
加上头文件
0#include "stdio.h"
1#include <malloc.h>
2#include <stdlib.h>
3#include <unistd.h>
4#include <string.h>
5#include <stdio.h>
C类型字符串 后面有一个 '\0 ' 作为 结尾标示符隐含加入。
sizeof(a) 就包括了 '\0 '
而strlen(a) 没有将 '\0 '计算在内。
错误:‘O_RDONLY’ 未声明
来源 fd = open("test.file", O_RDONLY);
解决:
#include <fcntl.h>
int open(const char *pathname, int oflag, ... /* mode_t mode */);
语法参考:http://baike.baidu.com/view/26337.htm
区别于:
#include<stdio.h>
FILE * fopen(const char * path,const char * mode);
语法参考:http://baike.baidu.com/view/656681.htm
错误:‘CLONE_VM’ 未声明
错误:‘CLONE_FILES’ 未声明
来源: 使用clone时候 clone(do_something, child_stack, CLONE_VM|CLONE_FILES, NULL);
解决: #include <sched.h>
错误:‘pid_t’ 未声明
来源: /*定义子进程号 */ pid_t pid;
解决:
#include <stdlib.h>
错误:‘options’ 的存储大小未知
来源 : union semun options; http://dev.yesky.com/199/7643199_1.shtml
原因: semun定义问题
/usr/include/linux/ipc.h 中有定义
但是 /usr/include/sys/ipc.h 中没有
而通常程序会包含 sys/ipc.h sys/sem.h 不可能去包含 linux/ipc.h, linux/sem.h, 否则不可能在unix 下通过
解决:
union semun {
int val;
struct semid_ds *buf;
ushort *array;
}arg;
0 0
- Linux下常见的编译问题
- Linux下两个常见的编译错误
- Linux的下编译PHP常见错误及解决方法
- Linux下编译MySQLdb遇到的问题
- MP4Box 的问题及Linux下编译
- Linux 下编译wxWidgets GTK+的问题
- LINUX下MATLAB MEX编译的问题
- linux下C语言编译的问题
- Linux下tslib交叉编译的问题
- linux下编译出现的问题汇总
- LINUX下MATLAB MEX编译的问题
- 编译链接常见的问题
- linux下常见的权限问题及验证
- linux系统下快速配置vsftp及常见的问题
- linux 下编译诡异问题
- android linux下编译问题
- linux 系统下编译问题
- ubuntu下编译qt的常见错误
- nginx的配置
- 初学Opencv时候遇到的几个编译器报错问题
- Android自定义App Crash后的界面(Activity)
- 黑马程序员日记-8
- 抽象工厂+反射=反射工厂
- Linux下常见的编译问题
- 去掉字符串的空白字符,以及只限制图片的宽不限高德图片适配
- XSD学习笔记-自定义数据类型
- 机房收费系统=三层+设计模式
- mysql 批量更新
- poj--2549--Sumsets(二分查找)
- VMware中CentOS联网
- linux中的目录结构---Linux学习笔记
- Visual Studio 2010下基于32位操作系统和64位操作系统的SDL配置步骤