makefile shell命令 执行makefile文件的命令
- 开发语言
- 2023-08-13
- 241
大家好,如果您还对makefile不太了解,没有关系,今天就由本站为大家分享makefile的知识,包括执行makefile文件的命令的问题都会给大家分析到,还望可以解...
大家好,如果您还对makefile不太了解,没有关系,今天就由本站为大家分享makefile的知识,包括执行makefile文件的命令的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!
makefile 中为什么要删除可执行文件
makeclean 清除上次的make命令所产生的object文件(后缀为“.o”的文件)及可执行文件。
如何在makefile添加编译
运行cmd.exe(orcommand.cominwin9x)->进到vc/bin目录->运行vc-vars32.bat->进到makefile所在的目录->nmake/fmakefile从sourceforge上下载下来的libjpeg源代码中有一个makefile.vc的文件,可以通过nmake/fmakefile.vc[nodebug=1]来编译libjpeg,但是只能编译静态库,如果需要编译dll以便在emacs等程序中使用的话,需要修改makefile.vc和jmorecfg.h文件。在makefile.vc文件中添加编译dll规则:以下内容为程序代码:libjpeg.lib:$(LIBOBJECTS)$(RM)libjpeg.liblib-out:libjpeg.lib$(LIBOBJECTS)#添加以下这行libjpeg.dll:$(LIBOBJECTS)$(RM)libjpeg.dlllink-dll-out:libjpeg.dll$(LIBOBJECTS)在jmorecfg.h中添加#define_WIN32_#defineJPEG_DLL然后nmake/fmakefile.vcnodebug=1就可以编译了。将makefile复制为一个.mak文件,然后用VC打开即可!.mak就是一个makefile可以指定怎样编译(命令行,必须先设置VC命令行环境)vcvars32.bat可设置环境,在vc98/bin下nmake/fXXXX.mak如果有一个makefile就只要nmake就可以了。
makefile文件通过make编译后用什么命令运行
makefile文件是一个命令的集合,指导shell生成需要的目标文件。生成的目标文件一般在当前目录下。
你可以在shell下使用./@@@来执行生成的目标文件。@@@是生成的目标文件的文件名。
我看你的问题,估计makefile不是你写的,应该是在安装别人的软件。
这种情况makefile里一般有个install目标,,你在make后直接在shell中输入makeinstall就OK了。你要是还有什么问题可以把makefile文件发给我,我给你看看。
如何在windows上编译linux可用的动态链接库
1、背景
最近的性能测试中,压测的某些接口返回的数据是一个复杂的json格式的字符串,而后续的接口中又需要把这个字符串修改后作为入参,自己处理起来比较麻烦。于是想到了把cjson编译成动态链接库在loadrunner的脚本中调用。另外,由于实际压测用的是部署在linux上的负载机,还需要再编译一个linux上的动态链接库。这样在调试时使用windows平台的dll,而在压测时使用linux平台的so。先附上我编译好的动态链接库,可以直接在loadrunner中使用http://download.csdn.net/download/ultrahook/10126401
2、cjson
cjson是一个开源的json库,它的优势在于完全用c实现,因此适用性相当广,用在loadrunner中也是毫无压力。它的git主页是https://github.com/DaveGamble/cJSON。
3、windows平台
打开vsualstudio(我用的是vs2015,其他版本也可以,codeblock也没问题,随你喜欢),新建一个win32程序,程序类型选择dll,附加选项选择空项目。把cJSON.c和cJSON.h拖到工程里。设置编译选项为release、x86(重要!),编译。将编译出来的cjson.dll放到loadrunner脚本的根目录下,然后在菜单File-Addfiletoscript,添加cjson.dll。在代码中加载cjson.dll,然后就可以使用cjson的函数了。先尝试一下,
123注意这里cjson_Version返回的是指针,但loadrunner认为是int,所以要显式转成指针,不然编译不通过。
再看cjson解析字符串的函数。它的用法如下:
12这里需要用到cJSON.h中声明的结构体cJSON,但直接引用cJSON.h在loadrunner中编译不过。这个也有解决办法,把cJSON.h中cJSON这个结构体的定义代码复制到action的顶部就可以了,如图cJSON.h中其他的变量或者宏也可以,如果编译时报错,复制过来就可以了。
4、Linux平台
下面再编译一个linux平台上的动态链接库,用在linux负载机上。cjson的代码中带了MakeFile,也有cmake,可以直接编译。但如果linux系统是64位的,则默认编译的是64位的so,无法被loadrunner加载,会提示“wrongELFclass:ELFCLASS64”。我们需要手动修改MakeFile,让它编译一个32位的so。1.修改cJSON源码根目录下的MakeFile打开MakeFile,分别在29、31、93、96行,增加-m32,如图2.在源码根目录下执行
12如果出现提示“fatalerror:sys/cdefs.h:Nosuchfileordirectory”,需要再装一个依赖库
123.编译成功后,会得到名为libcjson.so.1.6.0的动态链接库。把它复制到loadrunner脚本的根目录下,同样菜单File-Addfiletoscript,增加到脚本中。4.在脚本中加载so,这步和windows上是一样的。这样脚本就可以在linux下运行了。linux上安装负载机可以参考我的另一篇文章http://blog.csdn.net/ultrahook/article/details/78524182。
125、遗留问题
最后有个遗留问题,loadrunner似乎不支持平台宏,我想用宏控制,在windows下加载dll,linux下加载so,但没有找到解决方法。
logo语言中的make函数的用法
logo语言中的make函数需要得到什么就make什么,比如makeabc.txt得到一个文本文件,makeimage得到一个docker镜像,等等。一般来说使用make命令的目录下应该一个名为Makefile的文件。make-f<makefile>使用自定义的文件名。Makefile是一组规则的集合,他们给出了得到目标(target)所需的所有步骤,好比做一道菜需要的所有原料和工艺流程。
70makefile新手添加依赖文件的位置
在linux内核目录下的顶层目录会有一个makefile文件,执行make编译后生成的内核镜像会在/arch/arm/boot/目录下,而其他程序的makfile的依赖文件一般都在要编译程序所在目录。生成的目标文件也会在当前目录。不会具体还是要看你的makefile里面怎么写,根据具体情况而定。
关于makefile到此分享完毕,希望能帮助到您。
本文链接:http://www.xinin56.com/kaifa/223.html