linux make 编译 linux编译c文件
linux下的make命令使用问题
打错了罢?是make&& make intall
&&是 shell的逻辑 and(和),如果前面的命令执行失败,(true or flase)
退出状态不是 0,就不会执行后面的命令,
最后命令的退出状态会在 shell默认变量$?找到,例
nc10@your-5554c55be4~
$ ls
Mail/ doc/ hh* matrix/ sign.dat trash
News/ ee* junk numsorted* socket.awk* ttt.awk*
bin/ ex30.sh* lib/ pp* software/
crack_allword.txt hex2dec.awk lynx.cfg sign tmp/
nc10@your-5554c55be4~
$ test-f"pp"&& echo"yes, you have it"
yes, you have it
nc10@your-5554c55be4~
$ echo$?
0
nc10@your-5554c55be4~
$ test-f"lllll"&& echo"yes, you have it"
nc10@your-5554c55be4~
$ echo$?
1
nc10@your-5554c55be4~
$
第二次执行测试文件 lllll,没有这文件, test名令执行失败,
(条件为假(flase)),随后的命令就不执行
nc10@your-5554c55be4~
$ test-f"lllll"; echo"yes, you have it"
yes, you have it
nc10@your-5554c55be4~
$
分开两个命令,那不管前面执行如何,随后的还是会执行
如果分成两 make; make install,那make编译有错误的话,还是会照样
install,但安装的程序不能用哦.
Is that clear?:)
make是linux的自带的还是需要安装编译器才有make功能
make程序不是Linux系统自带的,也不是编译器带的,不要按照IDE的概念去理解(Windows下面的IDE一安装什么工具都有了),make工具是需要另外安装的。
比如说我的Linux系统上,当时搭建开发环境时是这样安装的:(我的系统是Fedora,所以用的yum)
yum install make gcc gcc-c++
看,编译器和make是分开安装的哈。
make工具是需要makefile的时候才用,而makefile是多个源文件的时候才有,如果你编译一个helloworld程序,直接用gcc或g++编译就可以了,从这点来看,也没理由把make和编译器捆绑在一起。
linux下将程序中用到的第三方库编译到自己的程序中我在linu
在开发过程中,我们有时需要依赖第三方库来扩展程序的功能。以下是如何处理第三方库在不同情况下的操作步骤。
首先,我们来看最佳情况——头文件和源文件。这种情况下,你只需要引用头文件并调用相关函数即可。例如,如果第三方库的头文件是abc.h,函数名是abc_test(),你只需要在代码中添加#include"abc.h",然后直接调用abc_test()函数。编译时,需要在Makefile中加入编译选项-I/abc/include,以便编译器能够找到库的头文件。这样的程序在运行时不需要额外的第三方库。
接下来是静态链接库的情况。在这种情况下,你同样需要引用头文件和相关函数,但此时你需要使用静态库libabc.lib。编译时,需要在Makefile中加入两个编译选项:一是-I/abc/include,用于将库的头文件包含进来;二是-L/abc/lib-labc,用于链接静态库。程序在运行时不再需要这个第三方库。
最后是动态链接库的情况。设动态链接库为libabc.so。调用动态链接库文件需要使用dlopen等函数。编译时,同样需要在Makefile中加入两个编译选项:一是-I/abc/include,用于包含库的头文件;二是-L/abc/lib-labc,用于链接动态库。但需要注意的是,程序在运行时需要这个第三方库的libabc.so文件。
以上是在不同情况下处理第三方库的步骤。在实际开发中,根据具体需求选择合适的库和链接方式,可以大大提高开发效率和程序的稳定性。