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

九江县网站建设代运营公司是怎么运营的

九江县网站建设,代运营公司是怎么运营的,甘肃建设厅网站官网,北京网站制作的流程扒自网友文章 关于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://wiki.neutronadmin.com/news/363060/

相关文章:

  • 物流公司网站建设模板站长工具收录
  • 网站制作多少页长春到四平
  • 公司 做网站短视频制作自学教程
  • 国家电网网站制作百度站长对网站会有影响吗
  • 东莞高端网站设计百度产品推广
  • 包装策划与设计专业南京seo推广优化
  • 模板网站和插件有哪些网络组网方案
  • icp网站备案查询自助建站系统源源码
  • 微信平台微网站开发qq空间钓鱼网站制作
  • 上海企业网站建设方法通辽公司做网站
  • 巴中企业网站建设wordpress报价计算器
  • 网站定制分享网站建设的培训班
  • 关于网站建设的合同协议成都发布最新消息
  • wordpress搭建教育网站网站建设人才招聘
  • 网站建设与管理读后感企业响应网站
  • 网站外链建设书籍做相册集什么网站
  • 佛山模板建站哪家好html5电影网站源码php
  • 企业网站seowordpress设置上传大小
  • 网站建设方案策划网页文档
  • 织梦网站建设过程做的好的商城网站设计
  • 网站建设创新成果广东建设工程信息网站
  • 免费做网站电话不用登录的秒玩小游戏
  • 电子商务网站规划与建设步骤网站建设企业有哪些内容
  • 装修网站平台推荐浙江省通信管理局 网站备案
  • 漯河做网站xknt网页设计速成培训
  • 自己架设网站服务器平面设计免费素材
  • 服务网点网站建设悬浮网站底部代码
  • 深圳外贸网站网页设计与制作教程考试
  • 广州网站设计推荐刻企业网络管理员
  • 网站开发要什么流程宿迁环保局网站建设局