autotool Makefile

交叉编译成LoongArch(Makefile,CMake,AutoTool,Qt等方式) 介绍如何在x86 的机器上交叉编译出在loongarch 架构上运行的程序。针对linux 常见编译构建方式(Makefile,CMake,AutoTool,Qt)提供了交叉编译的方法 阅读详情


对于一个较大的项目而言,完全手动建立Makefile是一件费力而又容易出错的工作。autotools系列工具只需用户输入简单的目标文件、依赖文件、文件目录等就可以比较轻松地生成Makefile了。现在Linux上的软件开发一般都是用autotools来制作Makefile。

autotools工具主要有:aclocal、autoscan、autoconf、autoheader、automake。使用autotools主要就是利用各个工具的脚本文件来生成最后的Makefile。下面结合实例来介绍具体的流程。
本人用的Ubuntu 10
这几个工具有没有安装可以用which命令来查看
#which autoscan
如果没有就输入sudo apt-get install autoscan

源文件如下:
#include "stdio.h"
int main (int argc, char** argv)
{
printf( "hello,linux world\n");
return 0;
}

第一步 autoscan

使用autoscan在给定目录及其子目录树中检查源文件,如果没有给出目录,就在当前目录及其子目录树中进行检查。最终生成两个文件:configure.scan、autoscan.log

wyylling@wyylling-laptop:~/program/main$ tree
.
|-- Makefile.am
|-- main.cpp
`-- makefile_backup

0 directories, 3 files
wyylling@wyylling-laptop:~/program/main$ autoscan
wyylling@wyylling-laptop:~/program/main$ tree
.
|-- Makefile.am
|-- autoscan.log
|-- configure.scan
|-- main.cpp
`-- makefile_backup

0 directories, 5 files


其中,configure.scan是configure.in的原型文件。而configure.in是autoconf的脚本配置文件。所以下一步的工作就是要对configure.scan进行修改,将其转化为configure.in。
wyylling@wyylling-laptop:~/program/main$ mv configure.scan configure.in
wyylling@wyylling-laptop:~/program/main$ vi configure.in


第二步 autoconf

configure.in文件内容如下:
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.

AC_PREREQ(2.61)
AC_INIT(FULL-PACKAGE-NAME, VERSION, BUG-REPORT-ADDRESS)
AC_CONFIG_SRCDIR([main.cpp])
AC_CONFIG_HEADER([config.h])

# Checks for programs.
AC_PROG_CXX

# Checks for libraries.

# Checks for header files.

# Checks for typedefs, structures, and compiler characteristics.

# Checks for library functions.

AC_CONFIG_FILES([Makefile])
AC_OUTPUT


说明:

1、以“#”号开始的是行为注释。
2、AC_PREREQ宏声明本文件要求的autoconf版本。
3、AC_INIT宏用来定义软件的名称和版本等信息,这里的BUG-REPORT-ADDRESS可以省略。
4、AC_CONFIG_SRCDIR宏用来侦测所指定的源码文件是否存在,来确定源码目录的有效性。这个参数一般不需要修改。
5、AC_CONFIG_HEADER宏用于生成config.h文件,以便autoheader使用。

修改时需要增加一个宏AM_INIT_AUTOMAKE(PACKAGE,VERSION),还要把AC_CONFIG_HEADER更改为AM_CONFIG_HEADER(该句有问题?ubuntu8.10不需要更改为AM)。具体如下:

# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.

AC_PREREQ(2.61)
AC_INIT(main, 1.0,
wyylling@126.com)
AM_INIT_AUTOMAKE(main,1.0)
AC_CONFIG_SRCDIR([main.cpp])
#AC_CONFIG_HEADER([config.h])
AM_CONFIG_HEADER([config.h])

# Checks for programs.
AC_PROG_CXX

# Checks for libraries.

# Checks for header files.

# Checks for typedefs, structures, and compiler characteristics.

# Checks for library functions.

AC_CONFIG_FILES([Makefile])
AC_OUTPUT


第三步 autoheader
wyylling@wyylling-laptop:~/program/main$ aclocal
wyylling@wyylling-laptop:~/program/main$ autoconf
wyylling@wyylling-laptop:~/program/main$ autoheader


第四步 automake
这是很重要的一步。automake需要的脚本配置文件是Makefile.am,这个文件需要自己建立。
其内容如下:
AUTOMAKE_OPTIONS = foreign
INCLUDES = `pkg-config --cflags gtkmm-2.4`
LIBS = `pkg-config --libs gtkmm-2.4`
bin_PROGRAMS = main
main_SOURCES = main.cpp

AUTOMAKE_OPTIONS为设置automake的选项。automake提供了3种软件等级:foreign、gnu、gnits,让用户选择使用,默认等级是gnu。现在使用的foreign只是检测必要的文件。

bin_PROGRAMS定义了要产生的执行文件名。如果产生多个可执行文件,每个文件名用空格隔开。

file_SOURCES定义file这个执行程序的依赖文件。同样的,对于多个执行文件,那就要定义相应的file_SOURCES。

接下来就是使用automake对其生成configure文件。这里可以使用选项--adding-missing让automake自动添加一些必要的脚本文件。

wyylling@wyylling-laptop:~/program/main$ automake --add-missing
configure.in: installing `./install-sh'
configure.in: installing `./missing'
Makefile.am: installing `./depcomp'


生成Makefile.in文件

wyylling@wyylling-laptop:~/program/main$ ./configure
checking for a BSD-compatible install... /usr/bin/install -c
checking whether build environment is sane... yes
checking for gawk... no
checking for mawk... mawk
checking whether make sets $(MAKE)... yes
checking for g++... g++
checking for C++ compiler default output file name... a.out
checking whether the C++ compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C++ compiler... yes
checking whether g++ accepts -g... yes
checking for style of include used by make... GNU
checking dependency style of g++... gcc3
configure: creating ./config.status
config.status: creating Makefile
config.status: creating config.h
config.status: executing depfiles commands

Makefile文件出现了。
wyylling@wyylling-laptop:~/program/main$ ls
aclocal.m4 config.log depcomp Makefile stamp-h1
autom4te.cache config.status install-sh Makefile.am
autoscan.log configure main makefile_backup
config.h configure.in main.cpp Makefile.in
config.h.in configure.in~ main.o missing

这样就完成了Makefile的制作。这是具有的功能:make、make install、make uninstall、make clean、make distclean、make dist。

1、键入make默认执行make all。其目标体为all。
wyylling@wyylling-laptop:~/program/main$ make
cd . && /bin/bash /home/wyylling/program/main/missing --run autoheader
rm -f stamp-h1
touch config.h.in
cd . && /bin/bash ./config.status config.h
config.status: creating config.h
config.status: config.h is unchanged
make all-am
make[1]: 正在进入目录 `/home/wyylling/program/main'
if g++ -DHAVE_CONFIG_H -I. -I. -I. `pkg-config --cflags gtkmm-2.4` -I /usr/include/gtkmm-2.4 -g -O2 -MT main.o -MD -MP -MF ".deps/main.Tpo" -c -o main.o main.cpp; \
then mv -f ".deps/main.Tpo" ".deps/main.Po"; else rm -f ".deps/main.Tpo"; exit 1; fi
g++ -g -O2 -L /usr/lib/gtkmm-2.4 -o main main.o `pkg-config --libs gtkmm-2.4`
make[1]:正在离开目录 `/home/wyylling/program/main'

2、make install(uninstall)

3、make clean (distclean)

make clean仅仅是清除之前编译的可执行文件及配置文件。而make distclean要清除所有生成的文件。

4、make dist

将所有的程序和相关的文档打包为一个压缩文件以供发布。

AD(AltiumDesigner)封装导入allegro生成allegro封装 AD(AltiumDesigner)封装导入allegro生成allegro封装 貌似PCB的封装问题是一个无尽话题,为了简单我总是想找捷径(主要还是太懒了),因为也是近期才开始学习使用allegro进行PCB设计,在最近的一个设计中,很多器件封装allegro中都没有,一个一个画感觉很费时间,但是在AD(AltiumDesigner)的封装库中是有的,于是便想着AD的封装库能不能倒入到alleg... 阅读详情

相关推荐

c++通过自然语言处理技术分析语音信号音高

其中,缓冲区大小为2048,最小基频为80Hz,最大基频为1000Hz。通常情况下,音高在85Hz到255Hz之间,因此可以根据实际情况修改最小和最大基频值。C++中可以使用数字信号处理库或语音处理库,比如MATLAB、Praat、YIN算法等等来进行音高分析。对于语音信号的音高分析,可以使用基频提取技术。基频是指一个声音周期的重复率,也就是一个声音波形中最长的周期。通常情况下,人的声音基频范围是85Hz到255Hz。这段代码使用了YIN算法来计算语音信号的基频,得出的结果即为音高。

SYC20110120的博客 1729

Makefile文件的简单理解

在大二的时候接触过Makefile,不过那时候没有把它当回事,想着现在不是有辣么多的IDE啦,学这个不是自找苦吃,所以就简单的看一下,敷衍了事,现在大三在老师的带领下系统的学习Linux后,发现当年好傻,接触的挺早的但是跟初学者一个样,哎呀,心好疼!!!下面我带大家深入的了解一下Gun Make及其基本用法。         首先我们先讲一下关于make 的理论知识,然后通过一个小例子实际操作一

西伯利亚小灰灰狼的博客 890

从零构建:用Arduino和MCP2515模块搭建你的第一个CAN Bus网络

本文详细介绍了如何使用Arduino和MCP2515模块从零搭建CAN Bus网络,实现温湿度数据的传输与显示。涵盖硬件连接、软件配置、发送端与接收端代码实现,以及系统调试和进阶应用,帮助初学者快速掌握CAN总线通信技术。

d6e7f8的博客 834

automake 项目管理

本文中使用的实例仍为《手动建立makefile简单实例解析》中的5文件工程实例。对于一个较大的项目而言,完全手动建立Makefile是一件费力而又容易出错的工作。autotools系列工具只需用户输入简单的目标文件、依赖文件、文件目录等就可以比较轻松地生成Makefile了。现在Linux上的软件开发一般都是用autotools来制作Makefile。autotools工具主要有:aclo

inter999的专栏 785

OpenClaw本地部署教程

本文详细介绍了在Windows 11系统上部署OpenClaw与Ollama本地模型的完整流程。主要内容包括:硬件要求说明、Node.js环境配置、Ollama模型安装与定制(重点扩展上下文窗口至32768 tokens)、OpenClaw核心框架安装与对接、常见问题解决(如模型上下文窗口过小报错)以及可选技能扩展和飞书接入方案。部署全程约需1-2小时,强调使用备用设备或虚拟机以确保安全,并提供关键配置参数和排错命令。该方案实现了"数据不出门、推理本地化"的私有化部署目标。

技术引领业务创新 2587

TMC5160 StallGuard2调参避坑指南:从SG_RESULT飘忽不定到稳定检测堵转

本文详细解析了TMC5160的StallGuard2功能在堵转测试中的调参技巧,从SG_RESULT波动问题到稳定检测的完整解决方案。通过电流环与反电动势分析、电源噪声处理及低速校准法等实用方法,帮助工程师实现工业级可靠的堵转检测,避免误触发和检测失效问题。

weixin_28727975的博客 382

Makefile(09)— include 文件包含、MAKECMDGOALS

当 make 读取到 include 关键字的时候,会暂停读取当前的 Makefile,而是去读 include 包含的文件,读取结束后再继读取当前的 Makefile 文件。include 使用的具体方式如下: filenames 是 shell 支持的文件名(可以使用通配符表示的文件)。include 通常使用在以下的场合:如果在上面的路径没有找到 include 指定的文件,make 将会提示一个文件没有找到的警示提示,但是不会退出,而是继续执行 Makefile 的后续的内容。当完成读取整个 M

stephenbruce的博客 1415

YOLOv8优化:特征融合 | 金字塔稀疏 Transformer(PST)——一个轻量级、即插即用的模块 | 25年7月最新成果

将 PST 嵌入当前最先进的实时检测模型(YOLOv11-N/S/M)后,在 MS COCO 上的 mAP 分别提升 0.9%、0.5%、0.4%,而延迟增加极小。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 613

Linux环境下Makefile文件制作浅谈

Linux 环境下 Makefile 文件制作浅谈(一)  编写:Leaf Zhou  EMAIL:leaf_zhou_8@hotmail.com  可自由复制但禁止删改  2003-10-12   无论对于一个初学者还是一个资深的Linux程序员,编写Makefile文件都是一件很麻烦的事;再者,开发人员应该把主要的精力放在程序代码的编写 上,而在Makefile文件花费太多的精力显然是不明智的

jilily的专栏 881

Python爬虫技术应用:体育赛事直播数据抓取与分析

Web爬虫(Web Crawling)是一种通过模拟浏览器行为从网站获取数据的技术。发送请求:发送HTTP请求(通常是GET或POST请求)获取目标网页的HTML内容。解析网页:使用解析工具(如lxml)从HTML中提取出所需要的信息。存储数据:将抓取到的数据存储到数据库、文件或数据结构中,供后续分析和使用。数据分析与展示:使用数据分析工具(如PandasMatplotlib)对数据进行处理、清洗和可视化,生成有价值的报告和图表。Requests:用于发送静态网页的HTTP请求并获取响应。

2201_76125261的博客 1310

从询价到回款:一篇讲透 SAP SD 销售与分销的实战入门指南

摘要: SAP SD(Sales and Distribution)模块是SAP ERP中管理销售与分销的核心组件,贯穿从订单到回款(Order-to-Cash)的全流程。其核心价值在于将销售业务结构化,通过主数据(客户、物料、定价)和交易单据(订单、交货、发票)实现流程可审计、可自动化。SD模块与物流(MM)、生产(PP)、财务(FI)深度集成,涵盖定价策略、信用控制、发运管理、国际贸易等复杂场景。关键设计包括条件技术(Condition Technique)实现灵活定价,单据流(Document Flo

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 263

Configure: error: C preprocessor “/lib/cpp“ fails sanity check

Configure: error: C preprocessor “/lib/cpp” fails sanity check mac 安装软件时遇到问题 gcc 和 cpp fails sanity check 只要把 CC 换成 clang, CXX 换成clang++ export CC=clang export CXX=clang++ 也可以直接cofigure ./configure CC=clang CXX=clang++ po 一下各个参数 CC=‘clang’ CCDEPMODE=‘dep

weixin_44343226的博客 1278

【华为OD机试真题】4、字符统计及重排 | 机试真题+思路参考+代码解析(C++、Java、Py)

题目描述 >给出一个仅包含字母的字符串,不包含空格,统计字符串中各个字母(区分大小写)出现的次数, 并按照字母出现次数从大到小的顺序。输出各个字母及其出现次数。 如果次数相同,按照自然顺序进行排序,且小写字母在大写字母之前

KJ.JK 3291

嵌入式makefile自动生成工具使用------autotool

嵌入式makefile自动生成工具使用------autotoolautotool的使用之前注意事项autotool使用流程1.运行 autoscan2.运行 aclocal3.运行 autoconf4.运行 autoheader5.运行 automake -a 或者 automake --add-missing6.运行configure 这边博文是本人在学习嵌入式所记录的一篇文章 autotool的使用之前注意事项 在使用autotool之前先确认有没有安装以下工具: aclocal、autoscan、a

magickingc的博客 515

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

autotool

autotool能够自动生成Makefile文件,㈠如果你是root用户登陆,在/root目录下建立项目,用autoscal后生成的configure.scan内容如下:#                                               -*- Autoconf -*-# Process this file with autoconf to produce a

Still_unknown的专栏 858

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

利用autotool自动生成Makefile

假设目录下只有hello.c文件 $ ls     hello.c $ autoscan                     $ ls     autoscan.log configure.scan hello.c                    <---生成 autoscan.log 和 configure.scan 2.创建 confi

无道子 613

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

使用autotool生成多文件的Makefile

<br />只显示与前一篇文章(automake入门之使用automake生成hello.c的Makefile)的不同<br />1 编辑文件a.h<br />#define PI 3.14<br />2 编辑文件a.c<br />#include <stdio.h><br />#include "a.h"<br />int main(void){<br />printf("PI is :%f/n", PI);<br />return 0;<br />}<br />3与上面的命令有两处需要修改:<br />

beizhetaiyangxingzou的专栏 571

Autotool使用

利用autotool系列工具生成makefile 今天学习了linux中利用autotool系列工具生成makefile,下面简要的做一下总结: Makefile是干什么的? makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,其中也可以执行操作系统的命令。 makefile带来的好处就是——“自动化编译

everysmile的专栏 1184

自动生成Makefile

前期疑问:未完待续。

晴山の博客 1791

【半原创半转载】autotool和mankefile.am生成makefile

GNU Autotools的用法 在较大项目中, 如果手动维护Makefile, 那将是一件复杂并痛苦的事情. 那么, 有没有一种轻松的手段生成Makefile呢? autotools系列工具正是在这样的呼声中诞生的. 它只需用户输入简单的目标文件, 依赖文件, 文件目录等就可以轻松地生成Makefile了. 另外, 这些工具还可以完成系统配置信息的收集, 从而可以方便地处理各种移植性问题.

739

使用autotool工具自动生成 Makefile

1、准备      $ cd /tmp      $ mkdir hello      $ mkdir src      $ cd src      $ vim hello.c          #include stdio.h>            int main(int argc, char *argv[])          {              printf("Hello, W

嵌入未来 563

基于《C++ cookbook》的示例文件使用autotool创建静态库及动态库复杂应用程序makefile

网上已经有一些介绍使用automake生成静态链接库和动态链接库的方法。但随着autotools的升级,一些配置文件需要进行调整,现在就针对C++ cookbook的示例文件1-1~1-3的源文件介绍一下automake的实做方法。      假设我们的项目根目录为myhello,下面有三个子目录georgeringo,johnpaul,hellobeatles,其中georgeringo目

DONGHUIB的博客 1047

Makefile.am 常用变量说明

本文用于说明编写AutoTool工具中Makefile.am相关变量的用法   一、概述 Makefile.am是AutoTool编译时读取相关编译参数的配置文件,文件区分大小写,从顶层目录到子工程生成二进制文件的路径上的目录都要存在,如果中间目录不存在该文件,其下的子目录不会被编译。 其中 中间目录的Makefile.am至少包含 SUBDIRS   最终生成可执行文件文件的Mak...

好习惯成就伟大 1411

makefile使用宏及用法$(宏标识符) $(cc)_autotool系列工具构建makefile

我使用的linux环境如下:我的linux环境自己手动安装了autoconf和automake:yum install autoconfyum install automakeubuntu下:autotools是个系列工具,首先确认你的ubuntu系统是否安装了以下工具(可以通过which命令查看): aclocal autoscan autoconf autoheader automake su...

weixin_39553776的博客 674

linux 商业项目 makefile 自动生成工具Autotools的使用

我们在平时的学习中要编译我们写的源代码生成可执行文件,大家都知道用gcc编译工具就可以完成任务,更复杂一点的,如果我们编写的文件比较多,那单纯在linux环境下写gcc命令进行编译就显得有点效率太低了,这时我们肯定想到写一个makefile来完成这样稍微复杂的编译过程,我想很多人也确实是是这样做的,所以我们回去学习makefile 的语法,其实如果编译 的文件量再多一些,文件之间的依赖关系更复杂一

tizileo的专栏 702

automake中Makefile.am和configure.ac的格式及编译过程

当写完代码之后,在代码所在的目录src中,编写Makefile.am文件,其内容如下: bin_PROGRAMS = ap_collector ap_server #Add extra debug info for gdb AM_CFLAGS = -ggdb ACLOCAL_AMFLAGS = -I m4 # libnfdump sources ipmap = ip_map.c ip_map.h

dingtao7890的博客 6370
上一篇: U-Boot编译过程完全分析
下一篇: 浅析Android系统架构及内核
KerNEL.AC.CN
博客等级 码龄15年 100粉丝 8原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值