Linux(10)-Make编译,Configure


软件发布的一些基础知识。

  1. gcc, cpp, as, ld–施工队,底层干活工人
  2. make --包工头,指挥工人工作
  3. configure–分析师,分析材料是否具备
  4. Autoconf–市政规划局,派出有用的分析师

内存泄漏–如果一个长时间运行的程序,不断申请新的控价,而且不释放。内存空间被一点一点地消耗光。

内存管理机制

  1. windows总是喜欢尽量留出空间来给程序用
  2. Linux–尽可能多的把会用到的库、命令等统统都搬进来,能占多少是多少。要运行程序时,他把东西一点一点搬进内存,Linux就把原来占用的资源一点一点往外搬。–Copy-on-Write

free 命令查看内存使用情况(单位为KB)

  1. men–内核缓冲后的利用率
  2. buffer/cache–软件占用的内存

发布软件
本机编译得到的二进制文件,需要很多库文件来协助才能运行的起来。
查看程序的依赖库,使用ldd命令。

lld ./rubbish1115

因为需要众多库文件协助,所以在Linux上发布软件时都是发布源码包,然后在目标系统上再编译一遍。

1.Make机制

Make 也是一个程序,用于统筹规划文件编译。通过Makefile来实现统筹规划。能够依据文件修改的时间,智能地判断出哪些模块需要重新编译,重新连接。

windows下的VC也是类似的作用,只不过把他们都用图形界面封装了起来。

make 命令运行的时候,会在当前目录下查抄Makefile 或者 makefile文件。找到就执行,没找到就报错。makefile每一段的格式都类似

目标:原料
<tab>加工方法

demo1.make编译

all:main.o part1.o part2.o        
	gcc main.o part1.o part2.o -o mybin 
main.o:mian.c
	gcc -c main.c
part1.o:part1.c
	gcc -c part1.c
part2.o:part1.c
	gcc -c part2.c
  1. make 不加任何参数的时候,从all 这一段开始工作。如果原料部分文件不存在,往下去寻找相应的文件,找到后返回,直至加工方法执行完成。
  2. make +参数来指定目标,那么就会去只想指定目标对应的那一段
  3. make 没有指定目标,makefile中也没有all, 从文件开始处执行。
  4. Makefile文件可以引用另一makefile文件,因此一个工程软件中,经常可以看到不同源码目录下都有一个makefile文件。

demo2.make清理

clean:
	rm ./*.o
	rm mybin

demo3:make 安装

将编译好的mybin文件,复制到系统中相应的目录中,完成安装

install:mybin
	cp ./mybin /user/bin/

demo4:make 卸载

作为一个标准的GNU软件,生成的makefile中应该高喊uninstall的定义。如果不规范的软件,没有提供uninstall方法,就只能手动删除了。

make uninstall

(瞎猜,盲写)

uninstall:
	rm /user/bin/mybin

2.configure

检查编译的各种条件是否必备,检查各种条件都必备之后,会生成Makefile文件。
铁打的make只有一个,流水的configure每个软件一个。
运行./configure 之后,会检查各种各样的条件,例如 “checking for xxxxx yes/no”, 不是必须的材料没有了也就没有了。如果必须的东西没有了,那么confiugre就会报错并停止。

2.1 Autoconf

自动生成configure文件(几万行,自己敲时不可能了。)

  1. autoscan–检查源码目录结构,生成confiugre.scan报告。(人工)修改该文件,生成configure.in文件,解释一些有用的内容:

autoscan

# AC_INIT(main.c)--说明这个工程主要的图纸是那个文件.
# AM_INIT_AUTOMAKE(rubbish1115,1.0)--说明这个项目的名称,叫做rubbish115, 版本是1.0.
# AC_PROG_CC--configure需要检查C语言编译器是否正常.
# AC_OUTPUT(Makefile)--configure需要产生的文件叫Makefile.
  1. aclocal–查看configure.in文件,对一些宏定义做一些详细的注解和说明,并生成aclocal.m4报告

aclocal

3.autoconf-依据configure.in 和aclocal.m4生成configure脚本
4.automake–生成configure脚本能够识别和使用的makefile.in文件(自己写的makefile文件不管用)。需要(人为)提供草稿文件makefile.am。
makefile.am文件内容

AUTOMAKE_OPTIONS=foreign	# 行业规范,
bin_PROGRAMS=rubbish1115    # 说明编译之后的程序叫rubbish1115
rubbish1115_SOURCES=main.c ai.c board.c # 说明这个工程包括这三个文件

Automake主要帮助开发GNU软件的人员来维护软件,所以在执行Automake时,默认会检查目录下是否存在标准GNU软件中应具备的文件,例如NEWS,AUTHOR, ChangeLog等文件。设置foreign,则会忽略对这些文件的检查。

2.2 软件的源码安装

原料都准备好之后,依次运行以下三条命令,就能把软件安装上

./configure
make
make install

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
arm-linux-gnueabihf-gdb是用于在ARM架构上进行调试的GNU调试器。编译它需要执行以下步骤: 1. 确认已经安装了arm-linux-gnueabihf交叉编译工具链和依赖项。这些可以通过在Linux系统中使用包管理器安装,例如apt或yum。具体的工具链和依赖项可以根据您的操作系统和软件包管理器的不同而有所变化。 2. 下载GDB源代码。您可以从GNU官方网站(http://www.gnu.org/software/gdb/)下载最新版本的源代码。解压缩下载的压缩包到合适的目录。 3. 进入源代码目录并执行配置命令。在命令行中,导航到解压缩后的源代码目录,然后运行以下命令: ``` ./configure --host=arm-linux-gnueabihf --target=arm-linux-gnueabihf ``` 4. 编译源代码。配置命令完成后,可以直接运行以下命令进行编译: ``` make ``` 5. 安装编译后的二进制文件。编译成功后,可以运行以下命令将二进制文件安装到指定的目录中: ``` make install DESTDIR=/path/to/install/directory ``` 替换“/path/to/install/directory”为您希望安装arm-linux-gnueabihf-gdb的目录。 6. 设置环境变量。为了能够在命令行中直接访问新安装的arm-linux-gnueabihf-gdb,您需要将它所在的目录添加到系统的PATH环境变量中。例如,您可以在~/.bashrc文件中添加以下行: ``` export PATH=/path/to/install/directory:$PATH ``` 然后运行以下命令以使更改生效: ``` source ~/.bashrc ``` 完成以上步骤后,您应该成功编译和安装了arm-linux-gnueabihf-gdb。您可以在命令行中使用它来进行ARM架构的调试。请记住,编译和安装软件时可能会遇到依赖项缺失或配置错误等问题,您可能需要根据具体的情况进行适当的调整和解决。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值