導航:首頁 > 編程系統 > linux編寫makefile

linux編寫makefile

發布時間:2021-02-28 01:50:47

linux下編寫簡單的makefile的報錯

如果真的 簡單,就不用 makefile
一個命令行
gcc -o hello hello.c
gcc 編譯 hello.c 文件,目標 文件 hello

㈡ 在linux下怎麼makefile

lex.yy.c: guish.l
flex guish.l lex.yy.c
guish.o: guish.cpp
g++ -fo guish.o guish.cpp
lex.yy.o: lex.yy.c
gcc -o lex.yy.o lex.yy.c
final: guish.o lex.yy.o
g++ -lfl final guish.o lex.yy.o
把這個保存到你程序目錄下 文件名為makefile 然後進終端 cd到該目錄 make一下試試
flex是生成c文件的詞法生成器 但是我不會具體用 g++也不熟 所以命令應該是錯的 makefile的格式就和我上面寫的一樣 下面的長空格是tab
還有你的-lfl 我把他理解成事gcc的參數了
你要makefile的規則我可以發給你一個pdf 看完都會基本使用makefile了
[email protected]

----------------------------------------------------------------------
----------------------------------------------------------------------

由於比較無聊亂回答問題的 ( makefile 幫助文檔是真的)

剩下的坐等標准答案

㈢ linux的makefile文件是用什麼語言寫的

其實主要的部分就是編譯命令,多數是gcc的編譯命令。
有一些make程序能識別的特殊的東西,比如目標名稱,@之類的特殊符號,$(CC)或者$(CFLAGS)等自定義的變數等。

㈣ 使用linux編程怎麼寫makefile

Makefile語法基礎
在Linux下,自動化編譯工具是通過make命令來完成的(一些工具廠商也提供了它們自己的make命令,如gmake等),make命令的基本格式如下:
make [-f makefile] [label]
它可以通過-f參數指定輸入文件,當省略-f參數時,默認輸入文件名為Makefile,由於我們通常不用這個-f參數,往往就用默認的Makefile文件名。
Makefile是一個文本文件,它是基於一定的語法規則的,它的基本執行規則定義如下:
target : [prerequisites]
command
target 標簽,用於標志當前構建的規則,它也可以是文件。
prerequisites 依賴項,在構建該標簽的時候先執行的規則
command make需要執行的命令。(任意的Shell命令)
注意:Makefile的target是頂格寫的,而Command需要加一個Tab鍵。我這里為了排版看起來舒服點,每一行都多加了一個Tab鍵,如果要使用本文的Makefile示例,請去掉各行的第一個Tab鍵,否則make的時候報錯。
例如,我們編寫一個簡單的Makefile:
clean:
@echo "clean"
all:
@echo "all"
當我們直接執行make命令的時候,輸出如下:
tianfang > make
clean
tianfang > make all
all
tianfang > make clean
clean
從中我們可以看到:默認情況下構建第一個標簽。可以通過在命令行參數中通過參數構建指定標簽。

㈤ linux 命令行怎麼寫make makefile命令

無論是在Linux還是在Unix環境中,make都是一個非常重要的編譯命令。不管是自己進行項目開發還是安裝應用軟體,我們都經常要用到make或make
install。利用make工具,我們可以將大型的開發項目分解成為多個更易於管理的模塊,對於一個包括幾百個源文件的應用程序,使用make和
makefile工具就可以簡潔明快地理順各個源文件之間紛繁復雜的相互關系。而且如此多的源文件,如果每次都要鍵入gcc命令進行編譯的話,那對程序員
來說簡直就是一場災難。而make工具則可自動完成編譯工作,並且可以只對程序員在上次編譯後修改過的部分進行編譯。因此,有效的利用make和
makefile工具可以大大提高項目開發的效率。同時掌握make和makefile之後,您也不會再面對著Linux下的應用軟體手足無措了。
但令人遺憾的是,在許多講述Linux應用的書籍上都沒有詳細介紹這個功能強大但又非常復雜的編譯工具。在這里我就向大家詳細介紹一下make及其描述文件
makefile。
Makefile文件
Make工具最主要也是最基本的功能就是通過makefile文件來描述源程序之間的相互關系並自動維護編譯工作。而makefile 文件需要按照某種語法進行編寫,文件

需要說明如何編譯各個源文件並連接生成可執行文件,並要求定義源文件之間的依賴關系。makefile 文件是許多編譯器--包括 Windows NT
下的編譯器--維護編譯信息的常用方法,只是在集成開發環境中,用戶通過友好的界面修改 makefile 文件而已。

㈥ [Linux]編寫一個簡單的C語言程序,編寫Makefile文件。

//calculate.h
#ifndef DEFCALCULATE_H
#define DEFCALCULATE_H
#include <string>
#include <map>
#include <iostream>
#include <cctype>
using namespace std;
// =========================================================================
// = 一些標志,如數字、+-*/()
enum Token_value
{
NAME,
NUMBER,
END,
PLUS='+',
MINUS='-',
MUL='*',
DIV='/',
PRINT=';',
ASSIGN='=',
LP='(',
RP=')'
};
//#############################################################################
//#############################################################################
double term(bool); //乘法
double prim(bool); //處理初等項
double error(const string&); //錯誤函數
Token_value get_token(); //輸入
double expr(bool get); //加和減
//#############################################################################
//#############################################################################
extern double number_value; //
extern string string_value; //
extern Token_value curr_tok; //當前操作標志
extern map<string,double> table;//
extern int no_of_errors; //
#endif

//winconsole.cpp
#include "calculate.h"
#include <sstream>
istream* input;
int main()
{
//switch(argc)
//{
//case 1:
input=&cin;
// break;
//case 2:
// input=new istringstream(argv[1]);
// break;
//default:
// error("too many arguments");
// return 1;
//}
table["pi"]=3.14159;
table["e"]=2.718182;
while (*input)
{
get_token();
if (curr_tok==END)
{
break;
}
if (curr_tok==PRINT)
{
continue;
}
cout<<expr(false)<<endl;
}
if (input!=&cin)
{
delete input;
}
return 0;
}
//error.cpp
#include "calculate.h"
int no_of_errors;
double error(const string& s)
{
no_of_errors++;
cerr<<"error:"<<s<<'\n';
return 1;
}
//expr.cpp
#include "calculate.h"
Token_value curr_tok=PRINT;
double expr(bool get)//加和減
{
double left=term(get);
for (;;)
{
switch(curr_tok)
{
case PLUS:
left+=term(true);
break;
case MINUS:
left-=term(true);
break;
default:
return left;
}
}
}
//get_token.cpp
#include "calculate.h"
extern Token_value curr_tok;
Token_value get_token()
{
char ch=0;
cin>>ch;
switch(ch)
{
case 0:
return curr_tok=END;
case ';':
case '*':
case '/':
case '+':
case '-':
case '(':
case ')':
case '=':
return curr_tok=Token_value(ch);
case '0':case '1':case '2':case '3':case '4':
case '5':case '6':case '7':case '8':case '9':
case '.':
cin.putback(ch);
cin>>number_value;
return curr_tok=NUMBER;
default:
if (isalpha(ch))
{
cin.putback(ch);
cin>>string_value;
return curr_tok=NAME;
}
error("bad token");
return curr_tok=PRINT;
}
}
//prim.cpp
#include "calculate.h"
double number_value;
string string_value;
map<string,double> table;
double prim(bool get)
{
if (get)
{
get_token();
}
switch(curr_tok)
{
case NUMBER:
{
double v=number_value;
get_token();
return v;
}
case NAME:
{
double& v=table[string_value];
if (get_token()==ASSIGN)
{
v=expr(true);
}
return v;
}
case MINUS:
{
return -prim(true);
}
case LP:
{
double e=expr(true);
if (curr_tok!=RP)
{
return error(")expected");
}
get_token();
return e;
}
default:
return error("primary expected");
}
}
//term.cpp
#include "calculate.h"
double term(bool get)
{
double left=prim(get);
for (;;)
{
switch(curr_tok)
{
case MUL:
left*=prim(true);
break;
case DIV:
if (double d=prim(true))
{
left/=d;
break;
}
return error("divide by 0");
default:
return left;
}
}
}
//makefile
objects = error.o expr.o get_token.o prim.o term.o winconsole.o
calculate:$(objects)
g++ -Wall -g -o calculate $(objects)
$(objects) : %.o : %.cpp
g++ -c $(CXXFLAGS) $< -o $@

//這是一個在linux下實現的簡單的計算器程序,實現帶括弧的+-*/運算的,由於復制進來代碼格式有點出入,你自己把代碼格式規范下,尤其是makefile文件里的命令前面一定要以一個tab開始

㈦ linux中用C語言編寫完模塊後怎麼編寫makefile文件用到什麼命令以什麼格式編寫

1、先寫Makefile編譯出***.ko文件
模板如下,保存到命名為Makefile文件里,放到你代碼的同級目錄下
TARGET=my_proc.ko
LINUXDIR=/lib/moles/$(shell uname -r)/build
PWD=$(shell pwd)
obj-m :=
obj-m += my_proc.o

all: $(TARGET)
$(TARGET): $(OBJS)
make -C $(LINUXDIR) SUBDIRS=$(PWD) moles
clean:
rm -f moles.order Mole.symvers $(TARGET) *.mod.c *.o
rm -rf .tmp_versions .mod* Mole.markers
2、make
3、root許可權下用命令插入模塊
insmod my_proc.ko
4、可以用你寫的應用程序打開、操作模塊了
5、查看模塊命令
lsmod
cat /proc/moles
modinfo my_proc.ko
6、root下卸載模塊
rmmod

㈧ linux中用C語言編寫完模塊後怎麼編寫makefile文件

1、先寫Makefile編譯出***.ko文件
模板如下,保存到命名為Makefile文件里,放到你代碼專的同級目錄下
TARGET=my_proc.ko
LINUXDIR=/lib/moles/$(shell uname -r)/build
PWD=$(shell pwd)
obj-m :=
obj-m += my_proc.o

all: $(TARGET)
$(TARGET): $(OBJS)
make -C $(LINUXDIR) SUBDIRS=$(PWD) moles
clean:
rm -f moles.order Mole.symvers $(TARGET) *.mod.c *.o
rm -rf .tmp_versions .mod* Mole.markers
2、屬make
3、root許可權下用命令插入模塊
insmod my_proc.ko
4、可以用你寫的應用程序打開、操作模塊了
5、查看模塊命令
lsmod
cat /proc/moles
modinfo my_proc.ko
6、root下卸載模塊
rmmod

㈨ 如何在linux下寫makefile

makefile :
文件命名:
1、襲 makefile Makefile GNUmakefile
在同一目錄下, 只能出現一種.
執行方式:make
2、test.mk test.Linux test.AIX
執行方式 :make -f test.mk/test.Linux/test.AIX

意思是你創建一個文件名為上面種文件名的一種後。你就創建了一個makefile.
然後你就可以在你創建的makefile里寫命令了。

閱讀全文

與linux編寫makefile相關的資料

熱點內容
洪興蔣天養最後結局 瀏覽:529
床戲大全電影 瀏覽:340
6Yd7XpHYN5 瀏覽:289
微盟用什麼編程 瀏覽:867
韓國電影一個保姆最後自殺 瀏覽:497
您的數據可以保存到哪些文件 瀏覽:903
快手帶貨數據用什麼軟體看 瀏覽:506
要在哪裡更新資料庫用戶和密碼 瀏覽:442
韓國電影女生打開快遞黑色狗鏈 瀏覽:234
win10郵件附件文件已損壞 瀏覽:413
邵氏老電影完整版 瀏覽:239
蘋果app怎麼設置繁體字 瀏覽:156
文件改為文件夾 瀏覽:992
gl電影床戲 瀏覽:655
linux安裝kudzu 瀏覽:577
怎麼導入bak文件 瀏覽:399
東興那裡有車載導航系統專業升級 瀏覽:156
攻是軍人 瀏覽:760
男主姓韓與老師女主 瀏覽:3
男主角姓洛的都市小說 瀏覽:800

友情鏈接