歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> 關於Linux

Linux編程常見問題大全

錯誤提示: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;

Copyright © Linux教程網 All Rights Reserved