【发布时间】:2017-07-12 17:19:49
【问题描述】:
我正在编写简单的 makefile 项目。
我正在尝试分两步构建程序:
- 编译源文件并将目标文件保存在不同的目录中
- 将对象链接到可执行文件中
考虑一些简单的事情,例如:
all:
gcc -o ~/some_dir/main.o -c main.c
ld -o my_program main.o
问题是调用目录不是“~/some_dir”,所以 ld 找不到目标文件...如何在 ld 搜索路径中包含“some_dir”?
从更全局的角度来看,我在不同的目录中有目标文件,我想使用一个链接器命令文件将它们链接在一起。
谢谢。
【问题讨论】:
-
嗯,通过指定要链接的对象的可用路径? 否则你会怎么做?但无论如何,通常最好使用
gcc作为链接器驱动程序,而不是直接调用链接器:gcc -o my_program ~/some_dir/main.o。 -
另外,与其使用绑定到当前用户主目录 (
~/some_dir) 的路径,不如将构建文件放在与构建工作目录相关的位置,并找到源相对于包含 Makefile 的目录的文件。