linux学习笔记

linux下编译C++笔记

此篇为自我学习linux下C++编译过程遇到的各种坑的记录,并非教程,实属菜鸟,路过的大神朋友就不要继续往下看咯。


./configure 是什么,怎么编写configure.ac, Makefile.am

参考这个链接大型项目使用Autoconf/Automake完成编译配置 ,研究了两天也还是不是很明白,尤其是宏的生成这里。

make怎么指定自己添加的第三方库

使用gcc或g++命令时,指定第三方库的名字和位置。
假设要用到libm.so 这个函数库(.so是动态库,.a是静态库),那么gcc命令应该这么写:

gcc sin.c -lm -L/lib -L/usr/lib

  • -l 是告诉gcc编译和链接的时候要用到函数库(lmn的小写l)
  • m 是这个库的名字,lib和.so是它的扩展名
  • -lm 则是使用libm.so这个函数库的意思。后面的-L则是它的所在的路径,表示在/lib和/usr/lib中去寻找

一般linux的系统函数库默认安装在/lib 或者/usr/lib 中,所以也可以不写。
不过有一些后来我们自己安装的第三方库,比如boost,一般我的习惯是不安装在系统目录下,而是安装在用户级目录下/usr/local/lib, 这个时候就要指定-L了。

/lib 存放内核级库文件
/usr/lib 存放系统级库文件
/usr/local/lib 存放用户级的库文件

在/usr/local 这个目录下有几个比较相关的目录,比如说我自己安装一个第三方库boost,我可以把源码解压到/usr/local/src中,把boost下的lib放在 /usr/local/lib(或者/usr/local/lib64)下,把boost中的include目录(包含定义的一些变量的头文件)放在/usr/local/include下。

这个include什么用呢?
还是上面sin.c 的例子,有头文件#include <stdio.h>
那这个stdio.h是存放在/usr/include下的,假设是其他的头文件,放在/usr/local/include下,则在gcc编译的时候要再加上-I(HIJK的大写I)参数:

gcc sin.c -lm -I/usr/include

./configure –prefix=/usr/local/python3

表示将python3 安装在目录/usr/local/python3下,当执行编译安装 make&make install之后,会自动在/usr/local下出现python3目录,在之后卸载的时候只要将/usr/local/python3这个目录删除就可以,移植到其他机器上只要将这个目录复制就可以。好神奇。而之前那个安装文件的目录安装完直接删除就可以了。


命令行 将文件前n行/后n行复制到另一个文件:
head -1000 exam.txt > exam_head1000.txt
tail -1000 exam.txt > exam_tail1000.txt

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值