當我編譯我的程序並運行它時,我得到了一個符號查找錯誤。我這樣做:編譯時爲什麼需要包含.o文件?
$ gcc -o parts parts.c -lnettle
$ ./parts
$ ./parts: symbol lookup error: ./parts: undefined symbol: nettle_pbkdf2
我的代碼中包含了這些頭文件:
#include <nettle/pbkdf2.h>
#include <nettle/hmac.h>
#include <pbkdf2-hmac-sha1.c>
我通過包括gcc編譯過程中兩個包含的頭文件的目標文件解決我的問題。
$ gcc -o parts parts.c hmac.o pbkdf2.o -lnettle
事情是,我不明白髮生了什麼,因此爲什麼這個工程。爲什麼我必須包含.o文件而不僅僅是頭文件以避免符號查找或未定義的引用錯誤?
標題告訴你*定義了什麼*。目標文件提供了實際的定義。 –
你在你的源文件中放了什麼,你認爲是如此不必要? – Beta