首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >gcc使用libnet的未定义参考误差

gcc使用libnet的未定义参考误差
EN

Ask Ubuntu用户
提问于 2017-09-09 14:00:55
回答 1查看 4.6K关注 0票数 -1

我试图用libnet库在gcc中编译一个C程序。我的代码中包含了libnet.h文件,但是当我试图编译它时,我会收到一条错误消息:

代码语言:javascript
复制
/tmp/ccTEOH93.o: In function `main':
random_name.c:(.text+0x2f): undefined reference to `libnet_init'
random_name.c:(.text+0x72): undefined reference to `libnet_seed_prand'
random_name.c:(.text+0x7c): undefined reference to `libnet_get_prand'
random_name.c:(.text+0x8d): undefined reference to `libnet_get_prand'
random_name.c:(.text+0x10a): undefined reference to `libnet_name2addr4'
random_name.c:(.text+0x12e): undefined reference to `libnet_name2addr4'
random_name.c:(.text+0x148): undefined reference to `libnet_hex_aton'
random_name.c:(.text+0x163): undefined reference to `libnet_hex_aton'
random_name.c:(.text+0x192): undefined reference to `libnet_destroy'
collect2: error: ld returned 1 exit status

我试着在使用gcc时手动编译它,包括libnet.h库或libnet.h.h库(包括上面的所有函数)。还是什么都没用。编译器甚至会发送一条错误消息,表示无法找到库。

我做什么好?有什么问题吗?

我试图通过浏览这个程序存储在其中的文件,然后键入:

代码语言:javascript
复制
 gcc -o example example.c

代码语言:javascript
复制
 gcc -o example example.c -l libnet.h (or just libnet)

这在编译我的所有其他程序时起了作用,我看不出出了什么问题。我甚至试着改变gcc的输入顺序。

EN

回答 1

Ask Ubuntu用户

发布于 2017-09-10 16:21:27

头文件和库是不同的东西。

头文件(或包含文件)包含对象的声明(指定对象的类型、大小等)。头文件在构建的编译阶段使用,即当将源代码转换为特定于体系结构的对象代码时。要包含的标题的名称是在源代码本身中给出的,而不是在编译器命令行中给出的,例如

代码语言:javascript
复制
#include <foo.h>

如果某个特定的头文件不在编译器的标准搜索路径上,则可以在命令行上给出其他路径。

代码语言:javascript
复制
gcc -o myprog.o -c -I/path/to/foo myprog.c

另一方面,库包含实际的对象定义,即实现对象的预编译单元。它们在链接阶段(当目标文件与任何依赖的系统库链接以形成可执行程序时)使用,并在命令行上指定。

代码语言:javascript
复制
 gcc -o myprog myprog.o -lfoo

在这里,-lfoo告诉编译器搜索一个名为libfoo.alibfoo.so的库(注意前面的lib是隐含的,在命令行(即-lfoo而不是-llibfoo)中省略)。与头文件一样,非标准库路径可以使用选项-L来容纳。

代码语言:javascript
复制
 gcc -o myprog myprog.o -L/path/to/foolib -lfoo

在您的示例中,假设头文件和库都位于编译器希望查找这些内容的位置,并且希望在单个命令中编译和链接,则应该使用

代码语言:javascript
复制
gcc -o example example.c -lnet
票数 2
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/954261

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档