0
我很確定這是一個簡單的問題,但我在網上搜索了大約半個小時。編譯ubuntu中的頭文件。我在終端輸入什麼?
我有3個文件:
02_01.c
#include <stdio.h> // Notice the library included in the header of this file
#include <stdlib.h>
#include "myLibrary.h" // Notice that myLibrary.h uses different include syntax
#define MAX_LENGTH 21.8
#define WORK_WEEK 5
int main(void) {
function1();
return EXIT_SUCCESS;
}
myLibrary.c
void function1(void){
puts("It works :)");
}
void function2(void){
//This function does nothing as well
}
myLibrary.h
#ifndef MYLIBRARY_H_
#define MYLIBRARY_H_
void function1(void);
void function2(void);
#endif /* MYLIBRARY_H_ */
首先,我瀏覽到我的工作目錄。 通常在沒有本地頭文件我會鍵入:
gcc -o 02_01 02_01.c
./02_01
,它會工作。
我已經嘗試了各種東西,如:
的gcc -o 02_01 02_01.c myLibrary.c
這給了我函數 '使'
GCC的錯誤「隱式聲明-o在MyLibrary myLibrary.c這也給了同樣的錯誤。
什麼我應該在終端在Ubuntu打字?
所以我假設在myLibrary.c中的puts()函數沒有連接到02_01.c,這是我包含stdio.h的地方。
您必須在其中使用該函數的標頭,而不是在另一個.c文件中。 gcc無法建立兩個文件之間的鏈接。你的問題是什麼?你不想改變文件的內容? –
'myLibrary.c'中的代碼使用標準的I/O函數,這些函數在''中聲明。所以也許你應該把這個頭文件包含在'myLibrary.c'中?頭文件只是當前[*翻譯單元*](https://en.wikipedia.org/wiki/Translation_unit_(編程))的一部分,它們不會泄漏到其他獨立翻譯單元。(一個翻譯單元基本上是一個單獨的源文件及其包含的所有頭文件,因此是獨立單元。) –
@ Jean-FrançoisFabre謝謝。這就是我在C++中所做的。我實際上是從Lynda接下來的一段視頻課,這些都是作爲例子提供的文件。他們在Windows中使用Eclipse,所以也許這就是爲什麼它爲他們工作,而不是在Ubuntu上爲我工作。 – t3hdaniel