如何在没有makefile的情况下链接不同目录中的对象?

时间:2018-06-08 16:42:04

标签: c object-files

我有3个目录,srclibinclude。在include我有头文件header3.h。其代码如下:

//header3.h
extern void change(int *a);

lib我有change4.c文件,其中包含:

//change4.c
#include <stdlib.h>
#include "header3.h"

void change(int *a){
    int y=100;
    *a=y;
}

src我有manipulate5.c文件,其中包含:

//manipulate5.c
#include <stdio.h>
#include "header3.h"

int main(void){
     int x=10;
     printf("x is %d\n", x );
     change(&x);
    printf("x is now %d\n", x );
}

我已分别为文件manipulate5.ochange4.o创建了对象文件manipulate5.cchange4.c。当manipulate5.o位于srcchange4.o位于lib时,如何将这两者联系起来?

我应该进一步澄清;我应该能够在src目录中运行可执行文件。因此,我不允许在根目录中进行编译。

1 个答案:

答案 0 :(得分:0)

看起来您想要使用链接器。我假设你在linux上。 ld是你想要使用的。像

这样的东西
ld -o executableName lib/change4.o src/manipulate5.o

这假设您处于项目的顶层。您还必须将标题的两个包含更改为

#include "../include/header3.h"