gpt4 book ai didi

c - 在 Linux 上编译许多源文件时出错

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:47:43 25 4
gpt4 key购买 nike

我在 Linux 中编译时遇到问题,我所做的与许多其他主题和书籍所建议的完全相同,但无法理解我的错误。这是我的源文件:main.c、process_info.c 和 process_info.h

现在我忽略了我的代码的正确性,因为我正在尝试编译它以查看它是否有效并修复错误并且它们出现了(我是 Linux 的新手并且没有在不使用 IDE 的情况下进行任何调试).

为了在 Mint Linux 17 - Cinnamon 上编译我的源代码,我在终端上尝试这样做:

gcc main.o process_info.o -o newmain

main.o: In function `main':
main.c:(.text+0x26): undefined reference to `readFile'
collect2: error: ld returned 1 exit status

我也试过:

gcc -Wall  main.c process_info.c -o newmain

/tmp/ccnBKqCu.o: In function `main':
main.c:(.text+0x26): undefined reference to `readFile'
collect2: error: ld returned 1 exit status

我不知道为什么我会收到错误,因为我认为我做的事情是正确的。

下面是我的源文件的内容(里面的代码不正确,正在测试中):

/******************************************************************
*
* File: main.c
* Description: Main file to execute code
*
*******************************************************************/
#include "process_info.h"

int main() {

char *msg;
char msg_buffer[MAX_BUFF_SIZE];
char file_buffer[MAX_BUFF_SIZE];
int fileDes[FILE_DESC_SIZE];

readFile(file_buffer);

msg = "hello world\n";
pipe(fileDes);

if (fork() == IS_CHILD) {
// This is the child process
printf("child process: \n");
write(fileDes[WRITE_INDEX], msg,MESSAGE_SIZE );
exit(0); // ends process

}

// This is the parent process
read(fileDes[READ_INDEX],msg_buffer, MESSAGE_SIZE);
write(WRITE_INDEX,msg_buffer, MESSAGE_SIZE);

return 0;

}

/******************************************************************
*
* File: OS_Proj1.h
* Description: OS Fork and Pipe Project header
*
*******************************************************************/
#ifndef PROCESS_INFO_H
#define PROCESS_INFO_H

#include<stdlib.h>
#include<stdio.h>
#include <unistd.h>
#include <stdbool.h>

#define MAX_BUFF_SIZE 1024 // common value
#define FILE_DESC_SIZE 2
#define IS_CHILD 0
#define MESSAGE_SIZE 12
#define READ_INDEX 0
#define WRITE_INDEX 1
#define PERMISSION 0
#define FILE_DIR_1 "/workspace/CSCI_474/Project1/filedat1"
#define FILE_DIR_2 "/workspace/CSCI_474/Project1/filedat2"
#define FILE_DIR_3 "/workspace/CSCI_474/Project1/filedat3"
#define FILE_DIR_4 "/workspace/CSCI_474/Project1/filedat4"
#define FD_ERROR -1

// Function prototypes
void readFile(char *buffer);


#endif


/******************************************************************
*
* File: process_info.c
* Description: Main file to execute code
*
*******************************************************************/
#include "process_info.h"
#include <fcntl.h>

void readFIle(char *buffer){
int fileDesc;
char filename[] = FILE_DIR_1 ;

fileDesc = open(filename,O_RDONLY,PERMISSION);

// test if file opened successfully
if(fileDesc == FD_ERROR){
perror("Cannot open output file\n");
exit(1);
}
// read the file if it opened successfully
else {
while( read(fileDesc,buffer,MAX_BUFF_SIZE) > 0 ) {
write(WRITE_INDEX,buffer,MAX_BUFF_SIZE);
}

}
}

最佳答案

非常简单:)

您已经定义了 readFIle,但声明名称是 readFile,您正在尝试调用它,但它没有定义。检查两者的拼写。

关于c - 在 Linux 上编译许多源文件时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26315749/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com