Решение кода функции без ссылки

#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>
#include <sys/wait.h>
#include "dummy2.h"

int exit_code=0;
void main(int argc, char *argv[]){
    int primero=atoi(argv[1]);
    int segundo=atoi(argv[2]);
    int fd[2];
    pipe(fd);
    fd[0]=dummy2_open( );
    for (int i=0; i<primero; ++i){
        int pid = fork();
        if(pid==0){
            execlp("./slave", "./slave", argv[2], (char *)NULL);
        }
    }
    int acum=0;
    while(waitpid(-1, NULL, 0)>0){
        int i=0;
        int rem=waitpid(-1, &exit_code, 0);

        if(rem==-1){
            printf("hi ha hagut un error al slave\n");
            exit(-1);
        }
        else{

            acum=rem+acum;
        }
    }
    dummy2_test(acum);

    sprintf(buffer, "Els fills han acabat\n");
    write(1, buffer, strlen(buffer));
    exit(0);
}

составив это он отвечает мне с этим

/tmp/ccA6uqSF.o: В функции main': master.c:(.text+0x1d2): referencia adummy2_open', не определяя master.c: (. text+0x2a0): снабди ссылками в 'dummy2_test', не определяя collect2: ошибка: ld returned 1 exit статус Makefile:4: я не удаюсь в инструкциях для цели 'степени магистра' make: *** [степень магистра] Ошибка 1

Контент dummy2.h

// Function headers for MASTER process
int  dummy2_open( );
int  dummy2_test( int );

// Function headers for SLAVE process
void dummy2_init( char buff[], int );
int  dummy2_comp( char buff[], int );
void dummy2_exit( );

и чтобы это составлять, я использую

gcc master.c -o master -L -ldummy
0
задан 04.01.2017, 14:18
0 ответов

Если код находится в другом файле C различно, ты должен составлять их вместе или соединять код возразило (если ты это составляешь в часть) или библиотека функций.

Пример составляя все объединенные файлы:

cc -o ejecutable master.c dummy2.c

С этим будут составлены оба и оно будет функционировать.

Если уже ты считаешь это составленным (ты произвел код я возражаю с cc -c dummy.c) и только ты хочешь соединить это, тогда добавь код объект следующего способа:

cc -o ejecutable master.c dummy2.o

Если ты произвел (или они предоставляли тебя) библиотеку функций (можешь производить ее ты сами с кодом, я возражаю с ar crs libdummy2.a dummy.o), тогда дебет использовать:

cc -o ejecutable master.c libdummy2.a

Имея в виду твое последнее обновление, точный способ был бы:

gcc master.c -o master -L. -ldummy2
1
ответ дан 03.12.2019, 17:52
  • 1
    они предоставляли мне книжный магазин libdummy2.a i dummy2.h и с этим составляя это как будто это был нормальный файл оно было бы должно функционировать –  04.01.2017, 14:15
  • 2
    Стой, tendrí эксперт, который нужно начать из-за ahí так как librerí в дебет соединять ее с именем правильного файла: libdummy2.a вместо dummy2.o, поскольку я предложил тебе. –  04.01.2017, 14:20
  • 3
    Смотри мой ú ltima actualizació n. Если ты хочешь использовать команду -l типов дебета использовать как маршрут . в opció n -L. Я поместил в моем комментарии có mo serí в, но имей в виду, что я предположил, что твою библиотеку функций называются libdummy2.a. –  04.01.2017, 14:28
  • 4
    большое спасибо всем уже они решили это мне это была точка, что я faltava –  04.01.2017, 14:31
  • 5
    Ничего, удовольствия. Помни что пометь правильный ответ и(или) оставляет твой обет. –  04.01.2017, 14:32