Как связать объекты в разных каталогах без make-файлов? - PullRequest
0 голосов
/ 08 июня 2018

У меня есть 3 каталога, src, lib и includeinclude у меня есть заголовочный файл 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.o и change4.o для файлов manipulate5.c и change4.c соответственно.Как связать два, когда manipulate5.o в src и change4.o в lib?

Я должен уточнить;Я должен иметь возможность запускать исполняемый файл в каталоге src.Таким образом, мне не разрешено выполнять компиляцию в корневом каталоге.

1 Ответ

0 голосов
/ 08 июня 2018

Похоже, вы хотите использовать компоновщик.Я предполагаю, что вы находитесь на Linux. ld - это то, что вы хотите использовать.Что-то вроде

ld -o executableName lib/change4.o src/manipulate5.o

Это предполагает, что вы находитесь на верхнем уровне вашего проекта.Вам также придется изменить оба включения заголовка на

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