makefile shell命令 執(zhí)行makefile文件的命令
- 夕逆IT
- 開(kāi)發(fā)語(yǔ)言
- 2023-08-13
- 241
大家好,如果您還對(duì)makefile不太了解,沒(méi)有關(guān)系,今天就由本站為大家分享makefile的知識(shí),包括執(zhí)行makefile文件的命令的問(wèn)題都會(huì)給大家分析到,還望可以解...
大家好,如果您還對(duì)makefile不太了解,沒(méi)有關(guān)系,今天就由本站為大家分享makefile的知識(shí),包括執(zhí)行makefile文件的命令的問(wèn)題都會(huì)給大家分析到,還望可以解決大家的問(wèn)題,下面我們就開(kāi)始吧!
makefile 中為什么要?jiǎng)h除可執(zhí)行文件
makeclean 清除上次的make命令所產(chǎn)生的object文件(后綴為“.o”的文件)及可執(zhí)行文件。
如何在makefile添加編譯
運(yùn)行cmd.exe(orcommand.cominwin9x)->進(jìn)到vc/bin目錄->運(yùn)行vc-vars32.bat->進(jìn)到makefile所在的目錄->nmake/fmakefile從sourceforge上下載下來(lái)的libjpeg源代碼中有一個(gè)makefile.vc的文件,可以通過(guò)nmake/fmakefile.vc[nodebug=1]來(lái)編譯libjpeg,但是只能編譯靜態(tài)庫(kù),如果需要編譯dll以便在emacs等程序中使用的話,需要修改makefile.vc和jmorecfg.h文件。在makefile.vc文件中添加編譯dll規(guī)則:以下內(nèi)容為程序代碼:libjpeg.lib:$(LIBOBJECTS)$(RM)libjpeg.liblib-out:libjpeg.lib$(LIBOBJECTS)#添加以下這行l(wèi)ibjpeg.dll:$(LIBOBJECTS)$(RM)libjpeg.dlllink-dll-out:libjpeg.dll$(LIBOBJECTS)在jmorecfg.h中添加#define_WIN32_#defineJPEG_DLL然后nmake/fmakefile.vcnodebug=1就可以編譯了。將makefile復(fù)制為一個(gè).mak文件,然后用VC打開(kāi)即可!.mak就是一個(gè)makefile可以指定怎樣編譯(命令行,必須先設(shè)置VC命令行環(huán)境)vcvars32.bat可設(shè)置環(huán)境,在vc98/bin下nmake/fXXXX.mak如果有一個(gè)makefile就只要nmake就可以了。
makefile文件通過(guò)make編譯后用什么命令運(yùn)行
makefile文件是一個(gè)命令的集合,指導(dǎo)shell生成需要的目標(biāo)文件。生成的目標(biāo)文件一般在當(dāng)前目錄下。
你可以在shell下使用./@@@來(lái)執(zhí)行生成的目標(biāo)文件。@@@是生成的目標(biāo)文件的文件名。
我看你的問(wèn)題,估計(jì)makefile不是你寫(xiě)的,應(yīng)該是在安裝別人的軟件。
這種情況makefile里一般有個(gè)install目標(biāo),,你在make后直接在shell中輸入makeinstall就OK了。你要是還有什么問(wèn)題可以把makefile文件發(fā)給我,我給你看看。
如何在windows上編譯linux可用的動(dòng)態(tài)鏈接庫(kù)
1、背景
最近的性能測(cè)試中,壓測(cè)的某些接口返回的數(shù)據(jù)是一個(gè)復(fù)雜的json格式的字符串,而后續(xù)的接口中又需要把這個(gè)字符串修改后作為入?yún)?,自己處理起?lái)比較麻煩。于是想到了把cjson編譯成動(dòng)態(tài)鏈接庫(kù)在loadrunner的腳本中調(diào)用。另外,由于實(shí)際壓測(cè)用的是部署在linux上的負(fù)載機(jī),還需要再編譯一個(gè)linux上的動(dòng)態(tài)鏈接庫(kù)。這樣在調(diào)試時(shí)使用windows平臺(tái)的dll,而在壓測(cè)時(shí)使用linux平臺(tái)的so。先附上我編譯好的動(dòng)態(tài)鏈接庫(kù),可以直接在loadrunner中使用http://download.csdn.net/download/ultrahook/10126401
2、cjson
cjson是一個(gè)開(kāi)源的json庫(kù),它的優(yōu)勢(shì)在于完全用c實(shí)現(xiàn),因此適用性相當(dāng)廣,用在loadrunner中也是毫無(wú)壓力。它的git主頁(yè)是https://github.com/DaveGamble/cJSON。
3、windows平臺(tái)
打開(kāi)vsualstudio(我用的是vs2015,其他版本也可以,codeblock也沒(méi)問(wèn)題,隨你喜歡),新建一個(gè)win32程序,程序類型選擇dll,附加選項(xiàng)選擇空項(xiàng)目。把cJSON.c和cJSON.h拖到工程里。設(shè)置編譯選項(xiàng)為release、x86(重要!),編譯。將編譯出來(lái)的cjson.dll放到loadrunner腳本的根目錄下,然后在菜單File-Addfiletoscript,添加cjson.dll。在代碼中加載cjson.dll,然后就可以使用cjson的函數(shù)了。先嘗試一下,
123注意這里cjson_Version返回的是指針,但loadrunner認(rèn)為是int,所以要顯式轉(zhuǎn)成指針,不然編譯不通過(guò)。
再看cjson解析字符串的函數(shù)。它的用法如下:
12這里需要用到cJSON.h中聲明的結(jié)構(gòu)體cJSON,但直接引用cJSON.h在loadrunner中編譯不過(guò)。這個(gè)也有解決辦法,把cJSON.h中cJSON這個(gè)結(jié)構(gòu)體的定義代碼復(fù)制到action的頂部就可以了,如圖cJSON.h中其他的變量或者宏也可以,如果編譯時(shí)報(bào)錯(cuò),復(fù)制過(guò)來(lái)就可以了。
4、Linux平臺(tái)
下面再編譯一個(gè)linux平臺(tái)上的動(dòng)態(tài)鏈接庫(kù),用在linux負(fù)載機(jī)上。cjson的代碼中帶了MakeFile,也有cmake,可以直接編譯。但如果linux系統(tǒng)是64位的,則默認(rèn)編譯的是64位的so,無(wú)法被loadrunner加載,會(huì)提示“wrongELFclass:ELFCLASS64”。我們需要手動(dòng)修改MakeFile,讓它編譯一個(gè)32位的so。1.修改cJSON源碼根目錄下的MakeFile打開(kāi)MakeFile,分別在29、31、93、96行,增加-m32,如圖2.在源碼根目錄下執(zhí)行
12如果出現(xiàn)提示“fatalerror:sys/cdefs.h:Nosuchfileordirectory”,需要再裝一個(gè)依賴庫(kù)
123.編譯成功后,會(huì)得到名為libcjson.so.1.6.0的動(dòng)態(tài)鏈接庫(kù)。把它復(fù)制到loadrunner腳本的根目錄下,同樣菜單File-Addfiletoscript,增加到腳本中。4.在腳本中加載so,這步和windows上是一樣的。這樣腳本就可以在linux下運(yùn)行了。linux上安裝負(fù)載機(jī)可以參考我的另一篇文章http://blog.csdn.net/ultrahook/article/details/78524182。
125、遺留問(wèn)題
最后有個(gè)遺留問(wèn)題,loadrunner似乎不支持平臺(tái)宏,我想用宏控制,在windows下加載dll,linux下加載so,但沒(méi)有找到解決方法。
logo語(yǔ)言中的make函數(shù)的用法
logo語(yǔ)言中的make函數(shù)需要得到什么就make什么,比如makeabc.txt得到一個(gè)文本文件,makeimage得到一個(gè)docker鏡像,等等。一般來(lái)說(shuō)使用make命令的目錄下應(yīng)該一個(gè)名為Makefile的文件。make-f<makefile>使用自定義的文件名。Makefile是一組規(guī)則的集合,他們給出了得到目標(biāo)(target)所需的所有步驟,好比做一道菜需要的所有原料和工藝流程。
70makefile新手添加依賴文件的位置
在linux內(nèi)核目錄下的頂層目錄會(huì)有一個(gè)makefile文件,執(zhí)行make編譯后生成的內(nèi)核鏡像會(huì)在/arch/arm/boot/目錄下,而其他程序的makfile的依賴文件一般都在要編譯程序所在目錄。生成的目標(biāo)文件也會(huì)在當(dāng)前目錄。不會(huì)具體還是要看你的makefile里面怎么寫(xiě),根據(jù)具體情況而定。
關(guān)于makefile到此分享完畢,希望能幫助到您。
本文鏈接:http:///kaifa/223.html