makefile指定输出目录(如何make install到指定目录)

本文目录
如何make install到指定目录
1、首先Make命令的构建,做文件a.txt可以执行make a.txt命令,如果输入这条命令,它并不会起作用,因为Make命令本身并不知道,如何做出a.txt,需要有人告诉它,如何调用其他命令完成这个目标。
2、然后确认b.txt和c.txt必须已经存在,使用cat命令将这个两个文件合并,输出为新文件,Make命令依赖这个文件进行构建。
3、接着构建规则都写在Makefile文件里面,Makefile文件由一系列规则rules构成,第一行冒号前面的部分,叫做目标target,冒号后面的部分叫做前置条件prerequisites,第二行由一个tab键起首,后面跟着命令commands。
4、然后创建目标就构成一条规则。目标通常是文件名,指明Make命令所要构建的对象,比如上文的 a.txt 。
5、最后声明clean是伪目标之后,make就不会去检查是否存在一个叫做clean的文件,而是每次运行都执行对应的命令,PHONY这样的内置目标名还有不少。
makefile la 怎么指定
现有libmad交叉编译后安装于:/home/andy/share/libmad_install目录
现在应用程序miniplayer位于:/home/andy/share/mini_player目录
mini_player中的makefile里,怎么指定libmad库和mad.h头文件的路径呢?
1
指定 头文件用
-I /home/andy/share/mini_player
指定 库文件: -L 后面是具体的目录。
-L /home/andy/share/libmad_install
makefile如下,先编译完,拷到arm板上运行时提示:
/flac_app: error while loading shared libraries: librt.so.1: cannot open shared object file: No such file or directory
这些lib我已经拷到板上的/lib里了,怎么会找不到
#
# Makefile for the CAMERA Application.
#
#以下是指定编译器路径
CC = /opt/armv6/codesourcery/bin/arm-none-linux-gnueabi-gcc
#以下是指定编译需要的头文件
CFLAGS = -g -Wall -O0 -I/home/andy/share/alsalib/include -I/home/andy/share/libmad_install/include
#以下是源文件
SRCS = main.c miniplayer_decode.c miniplayer_play.c
#以下是指定需要的库文件
LIBS = -L/home/andy/share/libmad_install/lib -lmad -L/home/andy/share/alsalib/lib -lasound
#以下是指定目标文件 所有当.c文件变成.o文件
OBJS = $(SRCS:.c=.o)
#以下是生成可执行文件
EXECUTABLE = flac_app
#make all 执行生成可执行文件
#1编译器 2编译选项 3输出 4生成的可执行文件 5需要的源文件 6需要当库文件
all:
$(CC) $(CFLAGS) -o $(EXECUTABLE) $(SRCS) $(LIBS)
#make clean 删除所有的.o文件 和生成的可以执行文件
clean:
rm -f $(OBJS) flac_app
makefile中的指定头文件,源文件
可以使用VPATH变量也可以使用vpath后者可以分类指定头文件源文件的搜索路径
记住这样指定的路径仅仅是makefile本身查找头文件源文件的路径
在执行makefile时,还要指定gcc/g++搜索头文件库文件的搜索路径
-L //指定库文件搜索路径
-ltest//指定使用的动态库/静态库
-I //指定搜索头文件的路径
Makefile 怎么把obj文件编译到某个目录
目录结构
Project
- bin
- src
- obj
想要把编译的目标文件放到obj目录,
因为cl不能指定目标文件输出路径,
所以目前采取了一种很蛋疼的方式:
代码:
bin = "../bin/program.exe"
obj = "../obj"
link_cmd = "TODO:先留着吧"
linkcmd_vc = "TODO:也留着吧"
objects = $(obj)/main.obj
$(bin) : $(objects)
$(CC) -o $(bin) $(objects)
$(obj)/main.obj : main.c
cd ../obj
$(CC) -c ../src/main.c
就是对于每个文件每次手动改变一下工作目录。
于是为了解决这个问题,扩展的想法是这样:
1. 找到一个Makefile每次make都首先执行的部分(就像c中的main.c)
2. 在上述部分中,改变当前工作路径。
如何指定Makefile编译目标文件到指定目录
可以参考Makefile视频教程:Makefile工程实践
一步一步从零开始写项目的Makefile
不仅可以编译目标文件到指定目录
源文件、中间生成的临时文件、头文件都可以放到指定目录,这是一个项目的基本需求。

更多文章:
form表单制作(为什么制作的form表单会在网页显示中多出一行)
2026年10月11日 09:10
teammate(teammate,company,partner)
2026年10月11日 06:10
javascript arraybuffer(javascript可以把base64编码转换成二进制代码吗求示例代码!)
2026年10月11日 04:00
text函数公式(excel中round和text函数的区别是什么)
2026年10月11日 03:50
google chrome打不开(chrome浏览器打不开怎么回事 浏览器打不开的处理方法)
2026年10月11日 02:00
websocket整合springboot(Springboot整合Websocket遇到的坑)
2026年10月11日 01:40
drawerlayout(android 怎样让drawerlayout设置的侧滑菜单的内容充满屏幕)
2026年10月10日 19:20
xor四位数怎么运算(单片机怎样用C语言实现4个数字间的异或)
2026年10月10日 17:50





