Makefile模板之 sub.c main.c

arm-linux-objcopy被用来复制一个目标文件的内容到另一个文件中,可以使用不同于源文件的格式来输出目的文件,即可以进行格式转换。用来将ELF格式的可执行文件转换为二进制文件。

arm-linux-objdump用于显示二进制文件信息,常用来查看反汇编代码。

src := $(shell ls *.c)
objs := $(patsubst %.c, %.o, $(src))

target: $(objs)
	gcc -o $@ $^
%.o:%.c
	gcc -c -o $@ $<
clean:
	rm -rf target *.o

_________________________________________________________________________________________

sub.c / sub.h /main.c三个文件:
gcc -c sub.c -o sub.o
gcc -c main.c -o main.o
gcc main.o sub.o -o test
./test

不想提供源码时,可以编译成静态库:
gcc -c sub.c -o sub.o
gcc -shared sub.o -o sub.a
gcc main.o -o test ./sub.a

———————————————————————————————————————————————————

 汇编  gcc -S sub.c -o sub.s 
预处理 gcc -E sub.c 

时间: 2024-07-31 08:40:39

Makefile模板之 sub.c main.c的相关文章

linux下面简单通用的Makefile模板

简单通用的Makefile模板: ############################################## # # 单目录通用Makefile # 目标文件可自己的设定 # 始须调试程序,修改 CFLAGS 变量为-Wall -g # # wuyq 20140825 ############################################## # EXECUTABLE为目标的可执行文件名, 可以根据具体的情况对其进行修改. EXECUTABLE := spi

Makefile模板 之CC指定编译器

CC :=arm-none-linux-gnueabi-gcc all: send_test send_test: main.o send.o $(CC) -o $@ $^ clean: rm -rf *.o send_test    $^ 所有的依赖目标的集合.以空格分隔.如果在依赖目标中有多个重复的,那个这个变量会去除重复的依赖目标,只保留一份.$@   表示规则中的目标文件集.在模式规则中,如果有多个目标,那么,"$@"就是匹配于目标中模式定义的集合. CC :=arm-none

main函数带参数C程序设计模板

/* 一个main含参程序的C语言设计模板,只需在结构体初始化中输入各个参数的性质及内容,就可以自动将参数分拣入结构体中. 命令执行方式如: 程序名 -a 参数1 -b 参数2 程序名 -?[-h] */ #include "stdafx.h" #define MAX_PARA 6 struct parameter { int ID;//参数编号 int content_num;//本参数后带的选项数目 bool IShave_prefix;//暂只接受必须使用-xx之类的参数前缀.

asp生成静态页主要涉及三个方面:模板,参数,fso

fso|静态|模板 asp生成静态页主要涉及三个方面:模板,参数,fso. 1,模板:这个其实就是页面的框架,以下为模板的例子:###############################这就是一个模板###############################<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-t

编译器-交叉编译修改Makefile文件

问题描述 交叉编译修改Makefile文件 我的用的是centos,在上面用交叉编译链编译一个软件.首先下载软件,解压,然后进入目录,执行./config 生成Makefile文件,将其中的编译器换成交叉编译链中的编译器.然后make结果用file命令查询编译的文件属性,编译出来的还是本机 Intel 80386并不是交叉编译链编译出来的.这是怎么回事?其中我已经用交叉编译链测试过我写的helloword程序,是可以的 解决方案 先要看openresty是否支持mips-linux-gcc交叉编

一个简单的通用Makefile实现

Makefile是Linux下程序开发的自动化编译工具,一个好的Makefile应该准确的识别编译目标与源文件的依赖关系,并且有着高效的编译效率,即每次重新make时只需要处理那些修改过的文件即可.Makefile拥有很多复杂的功能,这里不可能也没必要一一介绍,为了简化问题的复杂性,本文仅和大家讨论针对单目录下的C/C++项目开发,如何写一个通用的Makefile. 首先,我们假设当前工程目录为prj/,该目录下有6个文件,分别是:main.c.abc.c.xyz.c.abc.h.xyz.h和M

Makefile自动生成头文件依赖

前言 Makefile自动生成头文件依赖是很常用的功能,本文的目的是想尽量详细说明其中的原理和过程. Makefile模板 首先给出一个本人在小项目中常用的Makefile模板,支持自动生成头文件依赖. CC = gcc CFLAGS = -Wall -O INCLUDEFLAGS = LDFLAGS = OBJS = seq.o TARGETS = test_seq .PHONY:all all : $(TARGETS) test_seq:test_seq.o $(OBJS) $(CC) -o

一个适用于层级目录结构的makefile模版

今天写了个层次化的Makefile模版,用来自动化编译项目,这个模版应当包含以下功能: 适用于层次化结构,Makefile主要内容都放在顶层目录下的Makefile.env中,子层Makefile包含这个Makefile.env,只要增加一些变量就可以编译,特别方便添加新的功能模块 自动解析头文件依赖 我的程序的目录结构是这样的: 1. 源文件目录src,模块xxx放在src/xxx下,主程序在src/main下面 2.公共头文件放在include目录下,模块xxx的头文件放在include/x

Makefile之wildcard

1.wildcard : 扩展通配符2.notdir : 去除路径3.patsubst :替换通配符 例子:建立一个测试目录,在测试目录下建立一个名为sub的子目录$ mkdir test$ cd test$ mkdir sub 在test下,建立a.c和b.c2个文件,在sub目录下,建立sa.c和sb.c2 个文件 建立一个简单的Makefilesrc=$(wildcard *.c ./sub/*.c)dir=$(notdir $(src))obj=$(patsubst %.c,%.o,$(