gpt4 book ai didi

c - 使用 hunspell 库编译源代码时出现链接器问题

转载 作者:太空宇宙 更新时间:2023-11-04 02:06:53 25 4
gpt4 key购买 nike

我正在尝试在 Ubuntu 10.10 上编译这个使用 hunspell 库和 gcc(版本 4.6.3)的纯 C 源代码:

#include <stdlib.h>
#include <stdio.h>
#include <hunspell/hunspell.h>

int main() {
Hunhandle *spellObj = Hunspell_create("/home/artem/en_US.aff", "/home/artem/en_US.dic");

char str[60];
scanf("%s", str);
int result = Hunspell_spell(spellObj, str);

if(result == 0)
printf("Spelling error!\n");
else
printf("Correct Spelling!");

Hunspell_destroy(spellObj);
return 0;
}

使用命令:

gcc -lhunspell-1.3 example.c

但是我遇到了一些链接器问题:

/tmp/cce0QZnA.o: In function `main':
example.c:(.text+0x22): undefined reference to `Hunspell_create'
example.c:(.text+0x52): undefined reference to `Hunspell_spell'
example.c:(.text+0x85): undefined reference to `Hunspell_destroy'
collect2: ld returned 1 exit status

此外,我检查了/usr/include/hunspell/ 文件夹,文件 hunspell.h 存在并且包含我源代码中的所有函数。
我做错了什么,为什么我不能编译这个源代码?

最佳答案

尝试:

$ gcc example.c -lhunspell-1.3

See the documentation对于 -l 选项:

It makes a difference where in the command you write this option; the linker searches and processes libraries and object files in the order they are specified. Thus, 'foo.o -lz bar.o' searches library 'z' after file 'foo.o' but before 'bar.o'. If 'bar.o' refers to functions in 'z', those functions may not be loaded.

因此,您要求 GCC 首先搜索库,然后编译您的代码。您需要反其道而行之,通常在命令行最后指定要链接的库。

还要验证库文件在磁盘上的名称,通常会有从名称中删除版本号的符号链接(symbolic link),所以也许您的命令应该只是:

$ gcc example.c -lhunspell

链接到您系统上可用的“当前”库版本。

关于c - 使用 hunspell 库编译源代码时出现链接器问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19704637/

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