jac*_*ast 0 c linker gcc makefile undefined-reference
我知道这个问题已经被问了很多次了,但我无法真正解决它......所以我有一个src文件夹,其中包含我的main.c源代码,一个存储srclib我的文件的文件夹,以及一个存储我的文件的目录。现在 makefile 正确编译了 lib 并将文件放入文件夹中。包括这样的库:lib.cincludelib.hlib.alibmain.c
#include "lib.h"
Run Code Online (Sandbox Code Playgroud)
它是用-I ../include选项编译的,但是当我编译它时,我得到undefined reference to xxx库中每个函数的错误
那么我错过了什么?
没有。-I用于包含头文件。您还需要使用选项链接到库-l。
注意:您可能需要提供库路径使用-L选项。
引用在线gcc手册
-llibrary链接时搜索名为library的库……链接器在标准目录列表中搜索该库,该库实际上是一个名为
liblibrary.a. 然后链接器使用该文件,就好像它是通过名称精确指定的一样。
编辑:
引用同一手册的其余部分
在命令中编写此选项的位置会有所不同;链接器按照指定的顺序搜索和处理库和目标文件。因此,在文件之后但在.之前
foo.o -lz bar.o搜索库。如果引用 中的函数,则可能不会加载这些函数。zfoo.obar.obar.oz
因此,您需要将 放在-l<libanme>编译语句的最后,因为s_echo.c使用该特定库中定义的函数。
| 归档时间: |
|
| 查看次数: |
2718 次 |
| 最近记录: |