如何在Ubuntu系统中修改Makefile,以便将生成的可执行文件存储在'bin'目录下,而将编译产生的.o文件存放在'obj'目录里?
时间: 2024-10-18 13:06:32 浏览: 45
在Ubuntu12.04-32位操作系统下编译linphone-android.doc
在Ubuntu系统中,如果你想要修改`Makefile`来指定构建过程中的输出位置,你需要在`Makefile`中添加或编辑相关的规则。通常,这涉及到目标(target)和依赖项(dependencies)的设置。
1. 首先,找到`all`或`default`目标,这个目标通常用于编译并链接你的程序。你可以像这样修改它:
```make
all: my_program
```
其中,`my_program`是你程序的目标名称,可以改为你需要的任意名称。
2. 接着,添加一个新的规则来创建`bin`目录,如果它不存在的话:
```make
ifneq ($(wildcard bin),)
# 如果bin目录存在
else
mkdir -p bin
# 否则新建并添加权限
chmod +x bin
endif
```
3. 对于生成的可执行文件,更新`my_program`的依赖和目标路径:
```make
my_program: src/my_program.c obj/%.o
gcc $^ -o $(dir my_program)$(basename my_program)
```
4. 为了处理`.o`文件,你可以创建一个规则来处理它们,比如清理时删除`obj`目录下的所有 `.o` 文件:
```make
clean:
rm -f obj/*.o
```
5. 最后,在`src`目录下创建一个通配符规则,让Makefile知道所有的源文件都在这里:
```make
%.o: src/%.c
gcc -c $< -o $@
```
这样,每次运行`make`命令时,程序会自动编译并在`bin`目录下生成可执行文件,并将`.o`文件保存在`obj`目录内。记得根据实际情况调整文件名和路径。
阅读全文