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

做响应式网站设计师需要做什么网页游戏烈焰传奇

做响应式网站设计师需要做什么,网页游戏烈焰传奇,设计类专业需要艺考吗,常平网站最近在Linux下编程发现一个诡异的现象#xff0c;就是在链接一个静态库的时候总是报错#xff0c;类似下面这样的错误#xff1a; (.text0x13): undefined reference to func 关于undefined reference这样的问题#xff0c;大家其实经常会遇到#xff0c;在此#xff0c… 最近在Linux下编程发现一个诡异的现象就是在链接一个静态库的时候总是报错类似下面这样的错误 (.text0x13): undefined reference to func      关于undefined reference这样的问题大家其实经常会遇到在此我以详细地示例给出常见错误的各种原因以及解决方法希望对初学者有所帮助。 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.cgcc -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.agcc -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/special23/p/5083458.html
http://www.zqtcl.cn/news/941488/

相关文章:

  • 不同类型的购物网站汉川网站建设
  • 网站开发需求文档范文广州公司网站托管
  • 网站制作公司官网首页撸撸撸做最好的导航网站
  • 网站建设毕业设计综述centos 安装wordpress lnmp
  • 济宁专业做网站网站建设中 html
  • 中国排名高的购物网站最新发布的手机2022
  • 备案的网站名与公司名称出国用哪个地图app好
  • 网站建设工作室图片文章资讯类网站
  • 深圳自助建站系统网站题目有哪些
  • 郑州做网站kuihuakeji软文发布的平台与板块
  • 一那个网站可以做一建题安全文化企业示范企业评价标准
  • 网站没有关键词收录phpstudy配置网站
  • 返利网站怎么做的做网站推广见客户的话术
  • 两个人看的视频在线观看成都网站seo厂家
  • 做汽车配件出口用什么网站好些微信朋友圈营销技巧
  • 怎样建设传奇网站空间什么做电子书下载网站
  • 自己怎么做dj 视频网站网站模板制作教程视频
  • 苏州瑞熙网站建设签名图片在线制作
  • 重庆建站模板大全给公司创建网站
  • king cms网站建设上海传媒公司有哪些
  • 优时代网站建设网站建设哪家公司最好
  • 做网站有多难平面设计学徒要学多久
  • 包装网站模板做西式快餐店网站
  • 泉州制作网站软件九歌人工智能诗歌写作网站
  • wordpress安装时失败网站后台seo设置
  • 顺企网吉安网站建设网站设计师岗位职责
  • 佛山市品牌网站建设价格网站设计模板免费
  • 澧县网站建设常用的oa系统办公软件
  • 江门网站推广哪里专业网站显示百度地图
  • 上海微网站网站的营销推广方案及预算