当前位置: 首页 > news >正文

阿里云一键建站网站sem和seo的关系

阿里云一键建站网站,sem和seo的关系,外卖网站开发,办一家建筑公司需要哪些岗位扒自网友文章 关于undefined reference这样的问题#xff0c;大家其实经常会遇到#xff0c;在此#xff0c;我以详细地示例给出常见错误的各种原因以及解决方法#xff0c;希望对初学者有所帮助。 1. 链接时缺失了相关目标文件#xff08;.o#xff09; 测试代码如下大家其实经常会遇到在此我以详细地示例给出常见错误的各种原因以及解决方法希望对初学者有所帮助。 1.  链接时缺失了相关目标文件.o     测试代码如下       然后编译。 gcc -c test.c  gcc –c main.c      得到两个 .o 文件一个是 main.o一个是 test.o 然后我们链接 .o 得到可执行程序 gcc -o main main.o      这时你会发现报错了 main.o: In function main:  main.c:(.text0x7): undefined reference to test  collect2: ld returned 1 exit status      这就是最典型的undefined reference错误因为在链接时发现找不到某个函数的实现文件本例中test.o文件中包含了test()函数的实现所以如果按下面这种方式链接就没事了。 gcc -o main main.o test.o     【扩展】其实上面为了让大家更加清楚底层原因我把编译链接分开了下面这样编译也会报undefined reference错其实底层原因与上面是一样的。 gcc -o main main.c //缺少test()的实现文件  需要改成如下形式才能成功将test()函数的实现文件一起编译。 gcc -o main main.c test.c //ok,没问题了  2.    链接时缺少相关的库文件.a/.so     在此只举个静态库的例子假设源码如下。       先把test.c编译成静态库(.a)文件 gcc -c test.c  ar -rc test.a test.o      至此我们得到了test.a文件。我们开始编译main.c gcc -c main.c      这时则生成了main.o文件然后我们再通过如下命令进行链接希望得到可执行程序。 gcc -o main main.o      你会发现编译器报错了 /tmp/ccCPA13l.o: In function main:  main.c:(.text0x7): undefined reference to test  collect2: ld returned 1 exit status      其根本原因也是找不到test()函数的实现文件由于该test()函数的实现在test.a这个静态库中的故在链接的时候需要在其后加入test.a这个库链接命令修改为如下形式即可。 gcc -o main main.o ./test.a  //注./ 是给出了test.a的路径       【扩展】同样为了把问题说清楚上面我们把代码的编译链接分开了如果希望一次性生成可执行程序则可以对main.c和test.a执行如下命令。 gcc -o main main.c ./test.a  //同样如果不加test.a也会报错  3.    链接的库文件中又使用了另一个库文件     这种问题比较隐蔽也是我最近遇到的与网上大家讨论的不同的问题举例说明如下首先还是看看测试代码。       从上图可以看出main.c调用了test.c的函数test.c中又调用了fun.c的函数。    首先我们先对fun.ctest.cmain.c进行编译生成 .o文件。 gcc -c func.c  gcc -c test.c  gcc -c main.c      然后将test.c和func.c各自打包成为静态库文件。 ar –rc func.a func.o  ar –rc test.a test.o      这时我们准备将main.o链接为可执行程序由于我们的main.c中包含了对test()的调用因此应该在链接时将test.a作为我们的库文件链接命令如下。 gcc -o main main.o test.a      这时编译器仍然会报错如下 test.a(test.o): In function test:  test.c:(.text0x13): undefined reference to func  collect2: ld returned 1 exit status      就是说链接的时候发现我们的test.a调用了func()函数找不到对应的实现。由此我们发现原来我们还需要将test.a所引用到的库文件也加进来才能成功链接因此命令如下。 gcc -o main main.o test.a func.a      ok这样就可以成功得到最终的程序了。同样如果我们的库或者程序中引用了第三方库如pthread.a则同样在链接的时候需要给出第三方库的路径和库文件否则就会得到undefined reference的错误。 4 多个库文件链接顺序问题     这种问题也非常的隐蔽不仔细研究你可能会感到非常地莫名其妙。我们依然回到第3小节所讨论的问题中在最后如果我们把链接的库的顺序换一下看看会发生什么结果 gcc -o main main.o func.a test.a      我们会得到如下报错. test.a(test.o): In function test:  test.c:(.text0x13): undefined reference to func  collect2: ld returned 1 exit status      因此我们需要注意在链接命令中给出所依赖的库时需要注意库之间的依赖顺序依赖其他库的库一定要放到被依赖库的前面这样才能真正避免undefined reference的错误完成编译链接。 5. 在c代码中链接C语言的库     如果你的库文件由c代码生成的则在c代码中链接库中的函数时也会碰到undefined reference的问题。下面举例说明。     首先编写c语言版库文件           编译打包为静态库test.a gcc -c test.c  ar -rc test.a test.o      至此我们得到了test.a文件。下面我们开始编写c文件main.cpp          然后编译main.cpp生成可执行程序 g -o main main.cpp test.a      会发现报错 /tmp/ccJjiCoS.o: In function main: main.cpp:(.text0x7): undefined reference to test() collect2: ld returned 1 exit status      原因就是main.cpp为c代码调用了c语言库的函数因此链接的时候找不到解决方法即在main.cpp中把与c语言库test.a相关的头文件包含添加一个extern C的声明即可。例如修改后的main.cpp如下      g -o main main.cpp test.a      再编译会发现问题已经成功解决。转载于:https://www.cnblogs.com/azbane/p/9903104.html
http://www.pierceye.com/news/553671/

相关文章:

  • 网站建设设计制作公司微网站微商城
  • 长宁企业网站建设个人做外贸怎么做
  • 饲料 东莞网站建设免费推广app
  • 手机平台网站开发品牌网站设计首选
  • 哪些网站可以做调查赚钱图片生成软件
  • 网站空间的管理wordpress vip system
  • 新思维网站北京住房建设部网站首页
  • 温州网站制作套餐麒麟网站建设
  • 淘宝接单做网站wordpress能做企业网站吗
  • 网站建设运营公众号运营合同app网站开发书籍下载
  • 网站seo流程网站开发开账务处理
  • 婚介网站方案长沙网络公司电话
  • 自助网站搭建系统做网站接电话一般要会什么
  • 雷州网站建设公司网站建设与管理说课ppt
  • 问答类网站怎么做wordpress 调取页面缩略图
  • 做电影资源网站手机版wordpress实例配置
  • 广西网站建设方案品牌官网方案
  • 游戏工作室网络组建方案seo81
  • 搭建个人网站的步骤温州专业微网站制作价格
  • 网站怎么做充值系统php图书管理系统网站开发
  • 多商家网站建设自助建站系统源码 资源网
  • 广州番禺网站制作公司哪家好文章网站建设
  • 漯河网站建设e辽宁身营商环境建设局网站
  • 营销网站建设套餐企业信息公示管理系统
  • 网站布局设计排版网站外部链接做多少合适呢
  • 成品网站 源码1688上海网站建设 找德华专业
  • 网站建设费用申报佛山电脑培训班哪里有
  • 免费网站服务器厦门网站建设推广哪家好
  • 青海海东平安县建设局网站如何建设旅游网站
  • 成都响应式网站开发百度里面的站长工具怎么取消