【发布时间】:2014-03-15 08:03:21
【问题描述】:
当我编译我的程序并运行它时,我得到一个符号查找错误。我正在这样做:
$ 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 文件而不仅仅是头文件以避免符号查找或未定义的引用错误?
【问题讨论】:
-
标题告诉你什么被定义了。目标文件提供了实际的定义。
-
你在源文件中放了什么,你认为没有必要?
标签: c gcc compilation