导航:首页 > 源码编译 > 编译内核源码出现未定义的引用

编译内核源码出现未定义的引用

发布时间:2023-05-31 10:12:13

linux下 gcc编译提示错误,,在函数_start中 main 未定义的引用

你是不是在编译静态库或者动态库?也就是没有main函数。如果是,再参考一下下边的提示。
-c 参数表示将源文件编译成object(目标文件)。 即 gcc -c foo.c 会编译成 foo.o
gcc 不加参数时会编译且尝试链接成可执行文件,然而 foo.c 的代码中没有main函数的定义,所以最终无法成功链接,故报错。

② 编译错误 未定义的引用 怎么回事

③ c语言为什么已经引用了头文件,编译时还提示“未定义的引用”

编译的时候需要连接相应的库,加个 -lm 参数就可以

④ 交叉编译时提示 对'__C_ctype_b'的未定义引用

出现这种情况的原因,主要是C/C++编译为obj文件的时候并不旅卖需要函数的具体实现,只要有函数的原型即可。但是在链接为可执行文件的时候就必须要具体的实现了。如果错误是未声明的引用,那就是找不到函数的原型,解决办法这里就不细致说了,通常是相关的头文件未包含。
解决办法
指定原因就好办了,既然知道是缺少了函数的喊昌具体实现,那么就给它这个函数的实现就好了。比如上面的例子,是因为缺失了dlopen、dlsym、dlerror、dlclose这些函数的实现,这几个函数是用于加载动态链接库的,编译的时候需要添加-ldl来使用dl库(这是静态库,在系统目录下/usr/lib/i386-linux-gnu/libdl.a、/usr/lib/x86_64-linux-gnu/libdl.a)。
但是看上面编译的时候是有添加-ldl选项的,那么为什么不行呢?
gcc 依赖顺序问题
这个主要的原因是gcc编译的时候,各个文件依赖顺序的问题。
在gcc编译的时候,如果文件a依赖于文件b,那么编译的时候必须把a放前面,b放后面。
例如:在main.c中使用了pthread库相关函数,那么编译的时候必须是main.c在前,-lpthread在后。gcc main.c -lpthread -o a.out。
上面拆渗逗出现问题的原因就是引入库的顺序在前面了,将其放置在后面即可了。
g++ -o spider bloomfilter.o confparser.o crc32.o dso.o hashs.o md5.o qstring.o sha1.o socket.o spider.o threads.o url.o -rdynamic -lpthread -levent -lcrypt -ldl

⑤ linux中用gcc编译出现err:对‘ceil’未定义的引用

#include <math.h>

⑥ C语言里面对什么未定义引用是什么意思

undefined referenct to "xxxx"
如果xxxx是个函数,那么它只有声明和庆余没有定义,就差此是没有函数体
如果xxxx是个变量,那么变量没有定义。
如果你确信你定义了变量/函数,那么和很可唤滚能是没有让定义的目标文件参与链接过程,
常见的有缺少动态库链接指令,缺少obj。

⑦ linux下C语言对编译报错‘expl’未定义的引用

可以查看编程手册,对里面提到的宏进行测试,看是否支持该并锋函锋蔽搭数:

比较简单的方法是加编译器参数银拿: -std=c99

别忘了链接的时候加-lm

阅读全文

与编译内核源码出现未定义的引用相关的资料

热点内容
java获取时间gmt时间 浏览:819
为什么csgo一直连接不到服务器 浏览:503
安卓登ins需要什么 浏览:835
机器人算法的难点 浏览:225
全自动化编程 浏览:725
程序员高薪限制 浏览:692
压缩图片压缩 浏览:75
美国发明解压魔方 浏览:301
电脑怎么备案网上服务器 浏览:514
旅行商问题Python写法 浏览:952
解压破坏王里面的所有兑换码 浏览:860
文件夹如何拖拽还保留原来的 浏览:22
职业生涯pdf 浏览:954
ubuntu安装软件php 浏览:159
黑马程序员退学流程 浏览:362
网页服务器崩溃怎么回事 浏览:651
cnc编程前景怎么样 浏览:320
lniux命令详解 浏览:495
linuxmysql查询日志 浏览:369
老捷达伙伴压缩比 浏览:94